1 line
4.3 MiB
1 line
4.3 MiB
{"version":3,"sources":["webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/export.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/global.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/fails.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/an-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/has.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/is-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/redefine.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-length.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_root.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/utils.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/global.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getNative.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isObject.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/fails.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isObjectLike.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-create.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/iterators.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/eq.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/is-array.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/create-property.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/is-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-keys.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/shared.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_ListCache.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getMapData.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isArrayLike.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/has.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/a-function.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/uid.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/export.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/set-global.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/classof.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Map.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isFunction.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isBuffer.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isTypedArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_isPrototype.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/@nextcloud/vue/node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/to-length.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/utils/class.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/path.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-from.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/native-url.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Stack.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_toSource.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_MapCache.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_equalArrays.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isArguments.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_isIndex.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isLength.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_overArg.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_defineProperty.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getPrototype.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_safeGet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/keysIn.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/identity.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isEqual.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/merge.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/iterate.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/set-species.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/set-global.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/to-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/core/tokens/text.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/html.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/@nextcloud/vue/node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/l10n/dist/gettext.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/web.url.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/auth/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/defaults.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/createError.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/an-object.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/shared.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/uid.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/is-array.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/v8-version.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/modules/es.string.starts-with.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/scopedstorage.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/task.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/core/state.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","webpack:///./node_modules/@nextcloud/vue/node_modules/charenc/charenc.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/@nextcloud/vue/node_modules/node-gettext/lib/gettext.js","webpack:///./node_modules/@nextcloud/vue/node_modules/lodash.get/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/node-gettext/lib/plurals.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/l10n/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_stackClear.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_stackDelete.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_stackGet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_stackHas.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_stackSet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getRawTag.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_objectToString.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_isMasked.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_coreJsData.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getValue.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Hash.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_hashClear.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_hashDelete.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_hashGet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_hashHas.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_hashSet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_isKeyable.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_SetCache.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_arraySome.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_cacheHas.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_equalByTag.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_mapToArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_setToArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_equalObjects.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_arrayPush.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getSymbols.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/stubArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseTimes.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/stubFalse.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseUnary.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseKeys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_getTag.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_DataView.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Promise.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_Set.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_WeakMap.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseMerge.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseFor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_copyArray.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseCreate.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/isPlainObject.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/toPlainObject.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_copyObject.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_assignValue.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_createAssigner.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseRest.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_overRest.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_apply.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_setToString.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/constant.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_shortOut.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-tooltip/node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/@nextcloud/vue/node_modules/v-click-outside/dist/v-click-outside.umd.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/string.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/axios/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/capabilities/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/router/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.starts-with.js","webpack:///./node_modules/@nextcloud/vue/node_modules/escape-html/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/@nextcloud/vue/node_modules/striptags/src/striptags.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.code-point-at.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.from-code-point.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/@nextcloud/vue/node_modules/md5/md5.js","webpack:///./node_modules/@nextcloud/vue/node_modules/vue-multiselect/dist/vue-multiselect.min.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/auth/dist/requesttoken.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/dist/ProxyBus.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/event-bus/dist/SimpleBus.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.map.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/collection.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/freezing.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/auth/dist/user.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/axios.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/settle.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/@nextcloud/vue/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/redefine.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/path.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/a-function.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/user-agent.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/storagebuilder.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/node_modules/core-js/internals/create-property.js","webpack:///./node_modules/@nextcloud/vue/node_modules/@nextcloud/initial-state/dist/index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/flatten-into-array.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/microtask.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/perform.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/internals/same-value.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify-string.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/utils/options.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/core/scanner.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/core/parser.js","webpack:///./node_modules/@nextcloud/vue/node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","webpack:///./node_modules/@nextcloud/vue/node_modules/crypt/crypt.js","webpack:///./node_modules/@nextcloud/vue/node_modules/is-buffer/index.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/Multiselect.js","webpack:///./node_modules/@nextcloud/vue/node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/@nextcloud/vue/node_modules/hammerjs/hammer.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppContent.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppNavigation.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppNavigationCounter.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/AppNavigationItem.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/Content.js","webpack:///./node_modules/vue-localstorage/dist/vue-local-storage.js"],"names":["global","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","module","exports","options","source","target","key","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","prototype","noTargetGet","value","forced","undefined","sham","shared","has","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","Symbol","createWellKnownSymbol","withoutSetter","name","it","Math","check","globalThis","window","self","this","Function","exec","error","isObject","TypeError","String","hasOwnProperty","call","fails","Object","defineProperty","get","DESCRIPTORS","IE8_DOM_DEFINE","anObject","toPrimitive","$defineProperty","O","P","Attributes","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","state","unsafe","simple","enumerable","join","toInteger","min","argument","IndexedObject","requireObjectCoercible","definePropertyModule","createPropertyDescriptor","object","freeGlobal","freeSelf","root","bind","toString","isArray","val","isUndefined","isPlainObject","getPrototypeOf","isFunction","forEach","obj","fn","i","l","length","isArrayBuffer","isBuffer","constructor","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","document","merge","result","assignValue","slice","arguments","extend","a","b","thisArg","trim","str","replace","stripBOM","content","charCodeAt","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","store","wmget","wmhas","wmset","metadata","facade","STATE","getterFor","TYPE","type","propertyIsEnumerableModule","toIndexedObject","$getOwnPropertyDescriptor","baseIsNative","getValue","configurable","writable","__esModule","path","aFunction","variable","namespace","method","TO_STRING_TAG","wellKnownSymbol","TAG","bitmap","that","c","apply","ceil","floor","isNaN","activeXDocument","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","open","F","create","Properties","other","getRawTag","objectToString","symToStringTag","toStringTag","_typeof","iterator","$","proto","input","PREFERRED_STRING","valueOf","classof","Array","arg","propertyKey","memo","isOldIE","Boolean","all","atob","getTarget","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","list","idCountMap","identifiers","item","id","base","count","concat","index","css","media","sourceMap","references","updater","push","addStyle","insertStyleElement","createElement","attributes","nonce","keys","setAttribute","insert","Error","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","splice","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","next","done","err","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","from","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","_item","cssMapping","base64","data","sourceMapping","sourceURLs","sources","map","sourceRoot","cssWithMappingToString","modules","mediaQuery","dedupe","alreadyImportedModules","toObject","toLength","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","some","every","find","findIndex","filterOut","propertyIsEnumerable","internalObjectKeys","getOwnPropertyNames","match","version","userAgent","process","versions","v8","V8_VERSION","SPECIES","METHOD_NAME","array","foo","webpackPolyfill","deprecate","paths","children","addToUnscopables","Iterators","defineIterator","setInternalState","iterated","kind","Arguments","Constructor","IS_PURE","mode","copyright","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","clear","entry","eq","nativeCreate","getNative","isKeyable","__data__","isLength","TO_STRING_TAG_SUPPORT","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","regExpExec","max","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","regexp","indexOf","res","rx","S","functionalReplace","fullUnicode","unicode","lastIndex","results","accumulatedResult","nextSourcePosition","matched","position","captures","j","namedCaptures","groups","replacerArgs","feature","detection","normalize","POLYFILL","NATIVE","string","toLowerCase","postfix","random","ITERATOR","CONVERT_TO_STRING","pos","first","second","size","charAt","codeAt","$propertyIsEnumerable","NASHORN_BUG","1","V","integer","originalArray","C","point","REPLACE_SUPPORTS_NAMED_GROUPS","re","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","RegExp","stringMethod","regexMethod","regexpExec","R","getOwnPropertySymbols","IS_NODE","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","Map","baseGetTag","stubFalse","freeExports","nodeType","freeModule","Buffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","objectProto","Ctor","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","Promise","called","resolve","then","scheduled","setTimeout","functionToCheck","getStyleComputedProperty","element","property","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","parseInt","getWindowSizes","height","width","classCallCheck","instance","createClass","props","protoProps","staticProps","_extends","assign","getClientRect","offsets","getBoundingClientRect","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","sort","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","prop","cur","console","warn","enabled","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toUpperCase","prefix","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","event","callback","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","_this","requestAnimationFrame","jquery","Utils","PopperUtils","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","p","rf","EXISTS","functionToString","createIteratorConstructor","setPrototypeOf","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","values","re1","re2","regexpFlags","stickyHelpers","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","sticky","charsAdded","strCopy","multiline","ignoreCase","dotAll","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","E","A","UNSCOPABLES","ArrayPrototype","inherits","child","extended","toAbsoluteIndex","IS_INCLUDES","fromIndex","includes","getBuiltIn","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","RE","s","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","names","objectKeys","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","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","callWithSafeIterationClosing","isArrayIteratorMethod","getIteratorMethod","arrayLike","argumentsLength","mapfn","mapping","iteratorMethod","wrappedWellKnownSymbolModule","url","URL","searchParams","pathname","toJSON","href","username","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","funcToString","func","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","SetCache","arraySome","cacheHas","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","Uint8Array","baseTimes","isArguments","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","isObjectLike","reIsUint","baseAssignValue","getPrototype","overArg","arrayLikeKeys","baseKeysIn","isArrayLike","_defineProperties","baseIsEqual","initCompat","init","ua","msie","substring","rv","edge","getInternetExplorerVersion","normalizeComponent","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","__vue_script__","emitOnMount","default","ignoreWidth","ignoreHeight","mounted","$nextTick","_w","$el","_h","emitSize","_resizeObject","onload","addResizeHandlers","beforeDestroy","removeResizeHandlers","compareAndNotify","$emit","__vue_render__","$createElement","_self","_c","staticClass","attrs","tabindex","_withStripped","__vue_component__","plugin","install","Vue","component","GlobalVue","use","baseMerge","createAssigner","srcIndex","$filter","MAX_SAFE_INTEGER","Number","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","iteratorClose","Result","stopped","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","dummy","Wrapper","NewTarget","NewTargetPrototype","CONSTRUCTOR_NAME","nativeGetOwnPropertyDescriptor","nativeDefineProperty","MATCH","isRegExp","AMPERSAND","CLOSEPAREN","CLOSEANGLEBRACKET","CLOSEBRACKET","CLOSEBRACE","OPENPAREN","OPENANGLEBRACKET","OPENBRACKET","OPENBRACE","WS","TLD","SYM","UNDERSCORE","SLASH","MAILTO","PROTOCOL","QUERY","POUND","PLUS","NUM","NL","LOCALHOST","PUNCTUATION","DOT","COLON","AT","DOMAIN","Base","_createTokenClass","_class","TextToken","createTokenClass","inheritsToken","$forEach","STRICT_METHOD","arrayMethodIsStrict","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","returnMethod","$assign","B","symbol","chr","T","whitespace","ltrim","rtrim","emptyObject","freeze","isUndef","isDef","isTrue","isPrimitive","_toString","isValidArrayIndex","isPromise","catch","toNumber","makeMap","expectsLowerCase","isReservedAttribute","hasOwn","cached","cache","camelizeRE","camelize","_","capitalize","hyphenateRE","hyphenate","ctx","boundFn","_length","toArray","ret","to","_from","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","Date","getTime","keysA","keysB","looseIndexOf","once","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","def","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","hasSymbol","Reflect","Set","Dep","subs","addSub","sub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","pop","VNode","text","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","original","args","inserted","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getter","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","hooks","dedupeHooks","mergeAssets","key$1","inject","computed","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","info","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","observer","textNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","isA","isFrozen","depId","normalizeEvent","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","last","isTextNode","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_l","_t","_q","_m","_f","_k","_b","_v","_u","_g","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","d","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","clearTimeout","ensureCtor","reject","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","class","registerDeepBindings","_createElement","comp","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","_hasHookEvent","queue","waiting","flushing","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","created","destroyed","configDef","util","defineReactive","delete","observable","installedPlugins","_installedPlugins","unshift","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","childNode","mergeClassData","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","createElementNS","createComment","newNode","nextSibling","setTextContent","textContent","setStyleScope","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","innerHTML","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","dx","dy","moved","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","propertyName","_hasMove","cloneNode","attr","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","query","FunctionPrototype","FunctionPrototypeToString","nameRE","$trim","forcedStringTrimMethod","getGettextBuilder","GettextBuilder","_nodeGettext","_classCallCheck","_createClass","translations","debug","language","locale","setLanguage","getLanguage","GettextWrapper","gt","sourceLocale","addTranslations","setLocale","translated","vars","r","placeholders","subtitudePlaceholders","gettext","singular","plural","ngettext","checkCorrectnessOfIteration","HAS_SPECIES_SUPPORT","nativeSlice","fin","NativeSymbol","description","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","defineWellKnownSymbol","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","isSymbol","$defineProperties","properties","$getOwnPropertySymbols","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","space","$replacer","subscribe","bus","unsubscribe","_ProxyBus","_SimpleBus","OC","_eventBus","_nc_event_bus","ProxyBus","SimpleBus","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","nativeKeys","EOF","USE_NATIVE_URL","anInstance","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getState","getInternalURLState","pow","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","parts","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","code","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","port","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","updateSearchParams","updateURL","serializeURL","origin","getOrigin","protocol","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","output","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","SVGAnimatedString","convertToArray","addClasses","classes","newClasses","className","baseVal","newClass","SVGElement","removeClasses","ownKeys$2","enumerableOnly","symbols","_objectSpread$2","DEFAULT_OPTIONS","container","title","openTooltips","Tooltip","_reference","_options","evt","relatedreference","toElement","relatedTarget","_tooltipNode","evt2","relatedreference2","_scheduleHide","_isOpen","_show","_hide","_dispose","_classes","_setContent","classesUpdated","defaultClass","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","_this2","tooltipGenerator","tooltipNode","ariaId","substr","autoHide","_this3","asyncContent","_applyContent","_this4","allowHtml","rootNode","titleNode","innerSelector","loadingClass","loadingContent","asyncResult","innerText","_disposeTimer","updateClasses","_ensureShown","_this5","_create","_findContainer","_append","popperOptions","arrowSelector","_this6","_noLongerOpen","disposeTime","disposeTimeout","_removeTooltipNode","_this7","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","_setTooltipNodeEvent","ownKeys$1","_objectSpread$1","_onDocumentTouch","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","getContent","createTooltip","tooltip","_tooltip","_vueEl","targetClasses","_tooltipTargetClasses","destroyTooltip","_tooltipOldShow","setContent","setOptions","addListeners","onClick","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","abs","screenY","screenX","vclosepopover","_objectSpread","getDefault","MSStream","openPopovers","Element","ResizeObserver","disabled","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","cssClass","popoverId","oldVal","popoverNode","$_findContainer","$_removeEventListeners","$_addEventListeners","$_updatePopper","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","skipDelay","_ref2$force","$_scheduleShow","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","hidden","$_getOffset","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","_vm","visibility","keyup","keyCode","installed","finalOptions","insertAt","getElementsByTagName","styleInject","VTooltip","VClosePopover","VPopover","_requesttoken","getRequestToken","onRequestTokenUpdate","_user","getCurrentUser","t","createToken","isGlobal","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","NODE_DEBUG","compareIdentifiers","SemVer","loose","includePrerelease","m","LOOSE","FULL","major","minor","prerelease","num","build","format","compareMain","comparePre","release","inc","FREEZING","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","utils","encode","paramsSerializer","serializedParams","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","Authorization","fullPath","baseURL","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","message","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","Cancel","USES_TO_LENGTH","0","$map","notARegExp","correctIsRegExpLogic","nativeStartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","searchString","_defineProperty","ScopedStorage","scope","wrapped","persistent","GLOBAL_SCOPE_PERSISTENT","GLOBAL_SCOPE_VOLATILE","setItem","scopeKey","getItem","removeItem","defaultConstructor","defer","channel","IS_IOS","location","clearImmediate","MessageChannel","Dispatch","runner","listener","post","postMessage","port2","port1","onmessage","importScripts","PromiseCapability","$$resolve","$$reject","stateify","TokenState","CharacterState","BaseState","tClass","defaultTransition","jump","accepts","character","charOrRegExp","token","tokenClass","endToken","defaultToken","newStates","nextState","charenc","utf8","stringToBytes","bin","bytesToString","bytes","decodeURIComponent","escape","fromCharCode","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","tailPos","plurals","Gettext","catalogs","eventName","off","eventData","setTextDomain","msgid","dnpgettext","dgettext","msgidPlural","dngettext","pgettext","msgctxt","dpgettext","npgettext","translation","defaultTranslation","_getTranslation","pluralsFunc","getLanguageCode","msgstr","getComment","comments","textdomain","setlocale","addTextdomain","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","funcProto","coreJsData","maskSrcKey","reIsNative","symbolProto","Hash","assocIndexOf","baseGet","isKey","stringToPath","toKey","isHostObject","toSource","getMapData","memoize","baseToString","quote","resolver","memoized","Cache","defaultValue","ach","examples","sample","nplurals","pluralsText","af","ak","am","an","ar","arn","ast","ay","az","be","bg","bn","bo","br","brx","bs","ca","cgg","cs","csb","cy","da","de","doi","dz","en","eo","es","et","eu","fa","ff","fi","fil","fo","fr","fur","fy","ga","gd","gl","gu","gun","ha","he","hi","hne","hr","hu","hy","ja","jbo","jv","ka","kk","km","kn","ko","ku","kw","ky","lb","ln","lo","lt","lv","mai","mfe","mg","mi","mk","ml","mn","mni","mnk","mr","ms","mt","my","nah","nap","nb","ne","nl","nn","nso","oc","or","pa","pap","pl","pms","ps","pt","ro","ru","rw","sah","sat","sco","sd","se","si","sk","sl","so","son","sq","sr","su","sv","sw","ta","te","tg","th","ti","tk","tr","tt","ug","uk","ur","uz","vi","wa","wo","yo","zh","getLocale","getCanonicalLocale","translate","app","L10N","translatePlural","textSingular","textPlural","getFirstDay","firstDay","getDayNames","dayNames","getDayNamesShort","dayNamesShort","getDayNamesMin","dayNamesMin","getMonthNames","monthNames","getMonthNamesShort","monthNamesShort","ENTRIES","whitespaces","windowNames","getWindowNames","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","currentValue","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","q","qMinusT","baseMinusT","label","encoded","labels","redefineAll","getIterator","$fetch","Headers","getInternalParamsState","getInternalIteratorState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","percentDecode","sequence","deserialize","serialize","parseSearchParams","attribute","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","URLSearchParamsPrototype","append","getAll","found","entriesIndex","sliceIndex","fetch","baseIsEqualDeep","equalArrays","equalByTag","equalObjects","getTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","pairs","LARGE_ARRAY_SIZE","isMasked","nativeObjectToString","isOwn","unmasked","hashClear","hashDelete","hashGet","hashHas","hashSet","setCacheAdd","setCacheHas","predicate","mapToArray","setToArray","symbolValueOf","byteLength","byteOffset","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","resIndex","baseKeys","iteratee","typedArrayTags","freeProcess","types","require","isPrototype","DataView","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","assignMergeValue","baseFor","baseMergeDeep","keysIn","safeGet","srcValue","newValue","createBaseFor","fromRight","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","isCommon","isTyped","allocUnsafe","isDeep","copy","cloneArrayBuffer","typedArray","arrayBuffer","baseCreate","objectCreate","objectCtorString","copyObject","isNew","nativeKeysIn","isProto","baseRest","isIterateeCall","assigner","guard","overRest","setToString","nativeMax","otherArgs","baseSetToString","shortOut","constant","nativeNow","lastCalled","stamp","remaining","error1","error2","msMaxTouchPoints","middleware","isActive","detectIframe","srcTarget","composedPath","deleteCount","insertCount","actualDeleteCount","actualStart","_axios","_auth","client","requesttoken","cancelableClient","CancelToken","isCancel","_default","getCapabilities","_initialState","loadState","getRootUrl","generateFilePath","imagePath","generateUrl","generateOcsUrl","generateRemoteUrl","linkTo","service","linkToRemoteBase","allOptions","noRewrite","_build","modRewriteWorking","isCore","coreApps","link","appswebroots","encodeURI","webroot","flattenIntoArray","flat","depthArg","sourceLen","nativeJoin","ES3_STRINGS","separator","$reduce","CHROME_VERSION","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","maxCode","digits","NaN","NumberWrapper","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","setSpecies","iterate","speciesConstructor","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","newPromiseCapability","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","fail","rejection","onHandleUnhandled","exit","onUnhandled","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","capability","$promiseResolve","alreadyCalled","race","getFlags","NativeRegExp","CORRECT_NEW","RegExpWrapper","thisIsRegExp","patternIsRegExp","flagsAreUndefined","callRegExpExec","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","z","$startsWith","matchHtmlRegExp","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","iter","skipTempReset","prev","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","nonNative","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","allowable_tags","tag_replacement","striptags_internal","init_context","tag_set","parse_allowable_tags","tag_buffer","depth","in_quote_char","idx","normalize_tag","init_streaming_mode","getBuilder","appId","_storagebuilder","clearAll","sessionStorage","localStorage","clearStorage","clearNonPersistent","_scopedstorage","_interopRequireDefault","storage","pred","$includes","codePointAt","$fromCodePoint","fromCodePoint","elements","nativeMatch","matcher","matchStr","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","crypt","md5","encoding","bytesToWords","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","endian","_blocksize","_digestsize","digestbytes","wordsToBytes","asBytes","asString","bytesToHex","__g","u","G","g","U","core","W","__e","w","$isLabel","$groupLabel","preferredOpenDirection","optimizedHeight","maxHeight","internalSearch","trackBy","searchable","clearOnSelect","hideSelected","allowEmpty","resetAfter","closeOnSelect","customLabel","taggable","tagPlaceholder","tagPosition","optionsLimit","groupValues","groupLabel","groupSelect","blockKeys","preserveSearch","preselectFirst","internalValue","select","filteredOptions","filterAndFlat","isSelected","isExistingOption","isTag","valueKeys","optionKeys","flatAndStrip","currentOptionLabel","getOptionLabel","updateSearch","isOptionDisabled","$isDisabled","selectGroup","pointerDirty","deactivate","removeElement","wholeGroupSelected","wholeGroupDisabled","removeLastElement","adjustPosition","focus","blur","toggle","openDirection","showPointer","optionHeight","pointerPosition","visibleElements","pointerAdjust","optionHighlight","groupHighlight","addPointerElement","pointerReset","pointerForward","pointerBackward","pointerSet","selectLabel","selectGroupLabel","selectedLabel","deselectLabel","deselectGroupLabel","showLabels","limitText","showNoOptions","showNoResults","isSingleLabelVisible","singleValue","visibleValues","isPlaceholderVisible","deselectLabelText","deselectGroupLabelText","selectLabelText","selectGroupLabelText","selectedLabelText","inputStyle","contentStyle","isAbove","showSearchInput","hasSingleSelectedSlot","visibleSingleValue","L","D","N","onunhandledrejection","_a","onrejectionhandled","M","finally","BREAK","RETURN","return","WebKitMutationObserver","standalone","_injectStyles","esModule","keydown","preventDefault","keypress","stopPropagation","mousedown","autocomplete","click","mouseenter","observers","tokenElement","_valid","_major","packageJson","getVersion","er","numeric","anum","bnum","rcompareIdentifiers","collection","collectionStrong","InternalMetadataModule","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","preventExtensions","internalStateGetterFor","previous","getEntry","ITERATOR_NAME","getInternalCollectionState","isAdmin","uidElement","displayNameElement","isUserAdmin","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","promises","spread","isAxiosError","InterceptorManager","dispatchRequest","interceptors","interceptor","fulfilled","rejected","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","fileName","lineNumber","columnNumber","expires","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","line","originURL","urlParsingNode","resolveURL","requestURL","resolvePromise","payload","StorageBuilder","_persist","persisted","clearedOnLogout","elem","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","mapper","targetIndex","sourceIndex","mapFn","IS_RIGHT","flush","macrotask","IS_WEBOS_WEBKIT","queueMicrotaskDescriptor","queueMicrotask","promiseCapability","linkify","_interopRequireWildcard","tokenize","Options","escapeText","escapeAttr","attributesToString","linkifyStr","tokens","nl2br","isLink","_opts$resolve","formatted","formattedHref","scanner","parser","filtered","defaultProtocol","formatHref","validate","ignoreTags","linkAttributes","linkClass","ignoredTags","toHref","getObject","operator","optionValue","TOKENS","State","_state","_text","tlds","NUMBERS","ALPHANUM","WHITESPACE","domainStates","makeState","S_START","S_NUM","S_DOMAIN","S_DOMAIN_HYPHEN","S_WS","partialProtocolFileStates","partialProtocolFtpStates","partialProtocolHttpStates","partialProtocolMailtoStates","S_PROTOCOL_FILE","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_MAILTO","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","partialLocalhostStates","lowerStr","cursor","tokenLength","latestAccepting","sinceAccepts","TOKEN","_multi","MULTI_TOKENS","S_PROTOCOL","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","MAILTOEMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","qsAccepting","qsNonAccepting","localpartAccepting","multis","textTokens","secondState","multiLength","TEXT","MULTI","isDomainToken","MultiToken","hasProtocol","hasSlashSlash","base64map","rotl","rotr","randomBytes","words","hex","hexToBytes","bytesToBase64","triplet","base64ToBytes","imod4","readFloatLE","isSlowBuffer","_isBuffer","installedModules","__webpack_require__","moduleId","__webpack_exports__","_nextcloud_browser_storage__WEBPACK_IMPORTED_MODULE_10__","v_click_outside__WEBPACK_IMPORTED_MODULE_11__","_PopoverMenu__WEBPACK_IMPORTED_MODULE_12__","_nextcloud_auth__WEBPACK_IMPORTED_MODULE_13__","_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_14__","_nextcloud_axios__WEBPACK_IMPORTED_MODULE_15__","_nextcloud_axios__WEBPACK_IMPORTED_MODULE_15___default","_nextcloud_router__WEBPACK_IMPORTED_MODULE_16__","_directives_Tooltip__WEBPACK_IMPORTED_MODULE_17__","_functions_usernameToColor__WEBPACK_IMPORTED_MODULE_18__","_mixins__WEBPACK_IMPORTED_MODULE_19__","_Popover_Popover__WEBPACK_IMPORTED_MODULE_20__","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","browserStorage","persist","getUserHasAvatar","userId","flag","setUserHasAvatar","ClickOutside","Popover","PopoverMenu","iconClass","showUserStatus","showUserStatusCompact","preloadedUserStatus","isGuest","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","validator","statusColor","menuPosition","menuContainer","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuLoading","contactsMenuActions","contactsMenuOpenState","canDisplayUserStatus","hasStatus","userStatus","showUserStatusIconOnAvatar","icon","getUserIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","hasMenu","_getCurrentUser","menu","shouldShowPlaceholder","avatarStyle","lineHeight","fontSize","rgb","backgroundColor","initials","actions","hyperlink","longtext","loadAvatarUrl","fetchUserStatus","handleUserStatusUpdated","beforeDestroyed","toggleMenu","_callee","_context","fetchContactsMenu","closeMenu","_callee2","_yield$axios$post","_context2","topAction","t0","updateImageIfValid","avatarUrl","avatarUrlGenerator","srcset","_getCurrentUser2","oc_userconfig","avatar","userHasAvatar","img","Image","_utils_FindRanges__WEBPACK_IMPORTED_MODULE_10__","highlight","ranges","validRanges","chunks","currentIndex","currentRange","chunk","_Avatar__WEBPACK_IMPORTED_MODULE_2__","_Highlight__WEBPACK_IMPORTED_MODULE_3__","_mixins__WEBPACK_IMPORTED_MODULE_4__","Avatar","Highlight","subtitle","avatarSize","noMargin","margin","hasIcon","hasSlot","isValidSubtitle","_this$subtitle","_this$subtitle$trim","isSizeBigEnough","cssVars","_Highlight__WEBPACK_IMPORTED_MODULE_5__","_utils_FindRanges__WEBPACK_IMPORTED_MODULE_6__","needsTruncate","part1","part2","highlight1","highlight2","vue_multiselect__WEBPACK_IMPORTED_MODULE_11__","vue_multiselect__WEBPACK_IMPORTED_MODULE_11___default","_EllipsisedOption__WEBPACK_IMPORTED_MODULE_12__","_mixins_l10n__WEBPACK_IMPORTED_MODULE_13__","_ListItemIcon__WEBPACK_IMPORTED_MODULE_14__","_directives_Tooltip__WEBPACK_IMPORTED_MODULE_15__","EllipsisedOption","ListItemIcon","VueMultiselect","userSelect","autoLimit","tagWidth","elWidth","maxOptions","limitString","localValue","updateWidth","_this$$refs$VueMultis","formatLimitTitle","selection","v_tooltip__WEBPACK_IMPORTED_MODULE_0__","_PopoverMenuItem__WEBPACK_IMPORTED_MODULE_0__","PopoverMenuItem","iconIsUrl","action","_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__","getAvatarUrl","mentionText","_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__","_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__","_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default","_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__","_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__","_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__","_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","needQuotes","_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__","_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_style_index_0_id_100e3b6f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__","locals","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_style_index_0_id_7fe95a8f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_style_index_0_id_026c3def_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_style_index_0_id_0a0eb719_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_1_id_512ea768_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_style_index_0_id_69f40ec8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_0_id_512ea768_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_1__","nc","alt","xmlns","viewBox","fill","stroke","auto","$$v","download","rel","submit","checked","$$a","$$el","$$c","$$i","for","contenteditable","backgroundImage","role","scriptExports","functionalTemplate","injectStyles","_Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Avatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__","_Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","__file","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Avatar__WEBPACK_IMPORTED_MODULE_0__","_Highlight_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__","_Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2__","_Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Highlight_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_Highlight__WEBPACK_IMPORTED_MODULE_0__","_ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_ListItemIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_ListItemIcon__WEBPACK_IMPORTED_MODULE_0__","_EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_EllipsisedOption_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__","_Multiselect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__","_Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3__","_Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__","_utils_ScopeComponent__WEBPACK_IMPORTED_MODULE_0__","_Multiselect__WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__","_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__","_Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__","_PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_PopoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_PopoverMenuItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_PopoverMenu__WEBPACK_IMPORTED_MODULE_0__","_MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_MentionBubble_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_usernameToColor__WEBPACK_IMPORTED_MODULE_0__","md5__WEBPACK_IMPORTED_MODULE_3__","md5__WEBPACK_IMPORTED_MODULE_3___default","_utils_GenColors__WEBPACK_IMPORTED_MODULE_4__","maximum","finalInt","hashToInt","steps","_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__","gtBuilder","detectLocale","lang","pluralId","msgid_plural","addTranslation","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","excludeClickOutsideClasses","clickOutsideMiddleware","excludedClassList","hasNodeOrAnyParentClass","classArray","_step","_iterator","_node$classList","_excludeClickOutsideClasses__WEBPACK_IMPORTED_MODULE_0__","_isFullscreen__WEBPACK_IMPORTED_MODULE_1__","_isMobile__WEBPACK_IMPORTED_MODULE_2__","_richEditor__WEBPACK_IMPORTED_MODULE_3__","_userStatus__WEBPACK_IMPORTED_MODULE_4__","isFullscreen","_isFullscreen","_onResize","outerHeight","screen","_utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__","isMobile","onIsMobileChanged","_l10n__WEBPACK_IMPORTED_MODULE_0__","USERID_REGEX","USERID_REGEX_WITH_SPACE","escape_html__WEBPACK_IMPORTED_MODULE_9__","escape_html__WEBPACK_IMPORTED_MODULE_9___default","linkifyjs_string__WEBPACK_IMPORTED_MODULE_10__","linkifyjs_string__WEBPACK_IMPORTED_MODULE_10___default","striptags__WEBPACK_IMPORTED_MODULE_11__","striptags__WEBPACK_IMPORTED_MODULE_11___default","vue__WEBPACK_IMPORTED_MODULE_12__","vue__WEBPACK_IMPORTED_MODULE_12___default","_components_RichContenteditable_MentionBubble__WEBPACK_IMPORTED_MODULE_13__","userData","renderContent","genSelectTemplate","parseContent","renderComponentHtml","Item","mount","renderedHtml","_nextcloud_axios__WEBPACK_IMPORTED_MODULE_3__","_nextcloud_axios__WEBPACK_IMPORTED_MODULE_3___default","_nextcloud_router__WEBPACK_IMPORTED_MODULE_4__","_nextcloud_capabilities__WEBPACK_IMPORTED_MODULE_5__","_nextcloud_auth__WEBPACK_IMPORTED_MODULE_6__","capabilities","_yield$axios$get","_data$ocs$data","_e$response$data$ocs","_e$response$data$ocs$","user_status","ocs","Color","mixPalette","color1","color2","palette","stepCalc","red","yellow","blue","palette1","palette2","palette3","IsMobileState","vue__WEBPACK_IMPORTED_MODULE_0__","handleWindowResize","Component","$findIndex","SKIPS_HOLES","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecationMessage","log","nextKey","dest","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","doc","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","enable","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","clientX","clientY","p1","p2","sqrt","atan2","PI","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousemove","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","touches","changed","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","targetTouches","changedTargetTouches","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","curRecognizer","gestureEvent","gesture","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","hammerjs__WEBPACK_IMPORTED_MODULE_0__","hammerjs__WEBPACK_IMPORTED_MODULE_0___default","_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_1__","allowSwipeNavigation","mc","handleSwipe","startX","pageX","hasEnoughDistance","touchzone","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_style_index_0_id_71758b0f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppContent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppContent__WEBPACK_IMPORTED_MODULE_0__","_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__","_AppNavigationToggle_AppNavigationToggle__WEBPACK_IMPORTED_MODULE_1__","_mixins_isMobile__WEBPACK_IMPORTED_MODULE_2__","AppNavigationToggle","toggleNavigationByEventBus","unmounted","toggleNavigation","bodyStyles","animationLength","getPropertyValue","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_style_index_0_id_d3908c0a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_style_index_0_id_17ebeae3_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__","ctrlKey","shiftKey","metaKey","_AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigation_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigation__WEBPACK_IMPORTED_MODULE_0__","_AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationToggle_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__","highlighted","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_style_index_0_id_231d7daf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationCounter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationCounter__WEBPACK_IMPORTED_MODULE_0__","_mixins_actionText__WEBPACK_IMPORTED_MODULE_0__","isFocusable","_directives_Tooltip__WEBPACK_IMPORTED_MODULE_16__","_utils_GenRandomId__WEBPACK_IMPORTED_MODULE_17__","_utils_ValidateSlot__WEBPACK_IMPORTED_MODULE_18__","_l10n__WEBPACK_IMPORTED_MODULE_19__","_Popover__WEBPACK_IMPORTED_MODULE_20__","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","allowedChildren","VNodes","forceMenu","menuTitle","defaultIcon","ariaLabel","opened","focusIndex","randomId","hasMultipleActions","isValidSingleAction","firstActionElement","firstActionVNode","firstAction","firstActionBinding","$props","exact","firstActionEvent","_this$firstActionVNod","_this$firstActionVNod2","_this$firstActionVNod3","firstActionEventBinding","firstActionIconSlot","_this$firstAction","_this$firstAction$$sl","firstActionClass","iconSlotIsPopulated","initActions","beforeUpdate","openMenu","menuButton","onOpen","focusFirstAction","onMouseFocusAction","menuItem","closest","focusableItem","querySelectorAll","focusAction","removeCurrentActive","currentActiveElement","focusElement","liMenuParent","focusPreviousAction","preventIfEvent","focusNextAction","indexLength","focusLastAction","execFirstAction","onFocus","onBlur","v_click_outside__WEBPACK_IMPORTED_MODULE_0__","_Actions_Actions__WEBPACK_IMPORTED_MODULE_1__","_ActionButton_ActionButton__WEBPACK_IMPORTED_MODULE_2__","_AppNavigationIconCollapsible__WEBPACK_IMPORTED_MODULE_3__","_mixins_isMobile__WEBPACK_IMPORTED_MODULE_4__","_InputConfirmCancel__WEBPACK_IMPORTED_MODULE_5__","Actions","ActionButton","AppNavigationIconCollapsible","InputConfirmCancel","allowCollapse","editable","editLabel","editPlaceholder","pinned","undo","menuOpen","menuIcon","menuPlacement","editingValue","editingActive","collapsible","isIconShown","canHaveChildren","hasChildren","hasUtils","editing","navElement","$route","onMenuToggle","toggleCollapse","handleEdit","editingInput","focusInput","cancelEditing","handleEditingDone","handleUndo","valueModel","confirm","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_style_index_0_id_2e929b4f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_style_index_0_id_4f45864b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_style_index_0_id_3c4acfb3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__","focusable","isIconUrl","isLongText","_obj","_obj$1","_ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_ActionButton_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Actions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationIconCollapsible_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__","_InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__","_InputConfirmCancel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__","_AppNavigationItem__WEBPACK_IMPORTED_MODULE_0__","_Popover__WEBPACK_IMPORTED_MODULE_0__","vue__WEBPACK_IMPORTED_MODULE_2__","vue__WEBPACK_IMPORTED_MODULE_2___default","getText","_actionGlobal__WEBPACK_IMPORTED_MODULE_5__","_utils_GetParent__WEBPACK_IMPORTED_MODULE_6__","closeAfterClick","vue__WEBPACK_IMPORTED_MODULE_3__","vue__WEBPACK_IMPORTED_MODULE_3___default","allowed","isHtmlElement","isVueComponent","isForbiddenComponent","appName","_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_style_index_0_id_37f0357a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__","_Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Content_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__","_Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__","_Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default","_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_Content__WEBPACK_IMPORTED_MODULE_0__","VueLocalStorage","_properties","_namespace","_isSupported","_getLsKey","lsKey","_lsSet","rawValue","_lsGet","defaultType","_process","addProperty","vueLocalStorage","server","SERVER_BUILD","isSupported"],"mappings":"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AAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,KAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,Q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ExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,KAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,KAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,MAInB;;;;8BAKA,SAAUD,EAAQC,GAExBD,EAAOC,QAAU,EAAQ,SA58JvBD,EAAOC,QAAUogD,K,gBCFnB,IAAiDA,EAS9Cp+C,OAT8Co+C,EAStC,WACX,OAAgB,SAAUtsC,GAEhB,IAAIu1G,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUvpH,QAGnC,IAAID,EAASspH,EAAiBE,GAAY,CACzC9jH,EAAG8jH,EACH7jH,GAAG,EACH1F,QAAS,IAUV,OANA8T,EAAQy1G,GAAU7mH,KAAK3C,EAAOC,QAASD,EAAQA,EAAOC,QAASspH,GAG/DvpH,EAAO2F,GAAI,EAGJ3F,EAAOC,QA0Df,OArDAspH,EAAoB3oC,EAAI7sE,EAGxBw1G,EAAoBn/G,EAAIk/G,EAGxBC,EAAoBpsE,EAAI,SAASl9C,EAAS2B,EAAMgvC,GAC3C24E,EAAoB52G,EAAE1S,EAAS2B,IAClCiB,OAAOC,eAAe7C,EAAS2B,EAAM,CAAEsC,YAAY,EAAMnB,IAAK6tC,KAKhE24E,EAAoB1kD,EAAI,SAAS5kE,GACX,oBAAXwB,QAA0BA,OAAOgL,aAC1C5J,OAAOC,eAAe7C,EAASwB,OAAOgL,YAAa,CAAE1L,MAAO,WAE7D8B,OAAOC,eAAe7C,EAAS,aAAc,CAAEc,OAAO,KAQvDwoH,EAAoB3qC,EAAI,SAAS79E,EAAOmW,GAEvC,GADU,EAAPA,IAAUnW,EAAQwoH,EAAoBxoH,IAC/B,EAAPmW,EAAU,OAAOnW,EACpB,GAAW,EAAPmW,GAA8B,iBAAVnW,GAAsBA,GAASA,EAAM0I,WAAY,OAAO1I,EAChF,IAAIktC,EAAKprC,OAAOsJ,OAAO,MAGvB,GAFAo9G,EAAoB1kD,EAAE52B,GACtBprC,OAAOC,eAAemrC,EAAI,UAAW,CAAE/pC,YAAY,EAAMnD,MAAOA,IACtD,EAAPmW,GAA4B,iBAATnW,EAAmB,IAAI,IAAIV,KAAOU,EAAOwoH,EAAoBpsE,EAAElP,EAAI5tC,EAAK,SAASA,GAAO,OAAOU,EAAMV,IAAQ0E,KAAK,KAAM1E,IAC9I,OAAO4tC,GAIRs7E,EAAoBz2G,EAAI,SAAS9S,GAChC,IAAI4wC,EAAS5wC,GAAUA,EAAOyJ,WAC7B,WAAwB,OAAOzJ,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAupH,EAAoBpsE,EAAEvM,EAAQ,IAAKA,GAC5BA,GAIR24E,EAAoB52G,EAAI,SAAShO,EAAQ0a,GAAY,OAAOxc,OAAOhC,UAAU6B,eAAeC,KAAKgC,EAAQ0a,IAGzGkqG,EAAoBl3F,EAAI,SAIjBk3F,EAAoBA,EAAoB9yF,EAAI,qCAnF7C,CAsFN,CAEJ;;;;gCAKA,SAAUz2B,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GAuDOA,EAA6B,QAAI,CAC5D1lG,MAAO,CACL25H,QAAS,CACPz0I,KAAMxG,OACNy4F,UAAU,MAOV;;;;gCAKA,SAAUl7F,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACD,IAAI0J,EAA+F5J,gFAAmG,oEAClM6J,EAAoH7J,EAAoBz2G,EAAEqgH,GAC1IE,EAA4E9J,6DAAgF,iDAKjL+J,EAJsH/J,EAAoBz2G,EAAEugH,EAIlHE,GAAoFH,EAAqG3rH,GAEvN6rH,EAAwBnkH,KAAK,CAACnP,EAAO0F,EAAG,wlCAA2lC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0BAA0B,2CAA2C,MAAQ,GAAG,SAAW,4IAA4I,eAAiB,CAAC,yWAAyW,k0DAAk0D,WAAa,MAEljH+jH,EAA6B,QAAI,GAKxD;;;;8BAKA,SAAUzpH,EAAQC,EAASspH,GAEjC,aASAvpH,EAAOC,QAAU,SAAU6T,GACzB,IAAIzF,EAAO,GAuDX,OArDAA,EAAKrJ,SAAW,WACd,OAAO7C,KAAKyR,KAAI,SAAUpF,GACxB,IAAIxG,EAAU8L,EAAuBtF,GAErC,OAAIA,EAAK,GACA,UAAUI,OAAOJ,EAAK,GAAI,MAAMI,OAAO5G,EAAS,KAGlDA,KACN7D,KAAK,KAKVkK,EAAK3I,EAAI,SAAUqO,EAASC,EAAYC,GACf,iBAAZF,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAIG,EAAyB,GAE7B,GAAID,EACF,IAAK,IAAIvO,EAAI,EAAGA,EAAIvD,KAAKyD,OAAQF,IAAK,CAEpC,IAAI+I,EAAKtM,KAAKuD,GAAG,GAEP,MAAN+I,IACFyF,EAAuBzF,IAAM,GAKnC,IAAK,IAAImD,EAAK,EAAGA,EAAKmC,EAAQnO,OAAQgM,IAAM,CAC1C,IAAIpD,EAAO,GAAGI,OAAOmF,EAAQnC,IAEzBqC,GAAUC,EAAuB1F,EAAK,MAKtCwF,IACGxF,EAAK,GAGRA,EAAK,GAAK,GAAGI,OAAOoF,EAAY,SAASpF,OAAOJ,EAAK,IAFrDA,EAAK,GAAKwF,GAMd3F,EAAKc,KAAKX,MAIPH,IAKH;;;;8BAKA,SAAUrO,EAAQC,EAASspH,GAEjC,aAGA,SAASx3G,EAAeC,EAAKtM,GAAK,OAUlC,SAAyBsM,GAAO,GAAI9E,MAAMjI,QAAQ+M,GAAM,OAAOA,EAVtBC,CAAgBD,IAQzD,SAA+BA,EAAKtM,GAAK,GAAsB,oBAAXjE,QAA4BA,OAAOkL,YAAY9J,OAAOmP,GAAjE,CAAgF,IAAIE,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpR,EAAW,IAAM,IAAK,IAAiCqR,EAA7BV,EAAKI,EAAIvQ,OAAOkL,cAAmBwF,GAAMG,EAAKV,EAAGW,QAAQC,QAAoBN,EAAK/C,KAAKmD,EAAGvR,QAAY2E,GAAKwM,EAAKtM,SAAWF,GAA3DyM,GAAK,IAAoE,MAAOM,GAAOL,GAAK,EAAMC,EAAKI,EAAO,QAAU,IAAWN,GAAsB,MAAhBP,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIQ,EAAI,MAAMC,GAAQ,OAAOH,GARjaQ,CAAsBV,EAAKtM,IAI5F,SAAqCiN,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAIjQ,OAAOhC,UAAUmE,SAASrC,KAAKgQ,GAAGrL,MAAM,GAAI,GAAiE,MAAnD,WAANwL,GAAkBH,EAAE5M,cAAa+M,EAAIH,EAAE5M,YAAYnE,MAAgB,QAANkR,GAAqB,QAANA,EAAoB5F,MAAM6F,KAAKJ,GAAc,cAANG,GAAqB,2CAA2CE,KAAKF,GAAWD,EAAkBF,EAAGC,QAAzG,GAJ3MK,CAA4BjB,EAAKtM,IAEnI,WAA8B,MAAM,IAAIlD,UAAU,6IAFuF0Q,GAMzI,SAASL,EAAkBb,EAAKmB,IAAkB,MAAPA,GAAeA,EAAMnB,EAAIpM,UAAQuN,EAAMnB,EAAIpM,QAAQ,IAAK,IAAIF,EAAI,EAAG0N,EAAO,IAAIlG,MAAMiG,GAAMzN,EAAIyN,EAAKzN,IAAO0N,EAAK1N,GAAKsM,EAAItM,GAAM,OAAO0N,EAMhLpT,EAAOC,QAAU,SAAgCuO,GAC/C,IAAI6E,EAAQtB,EAAevD,EAAM,GAC7BxG,EAAUqL,EAAM,GAChBC,EAAaD,EAAM,GAEvB,GAAoB,mBAATzC,KAAqB,CAE9B,IAAI2C,EAAS3C,KAAKC,SAASC,mBAAmBC,KAAKC,UAAUsC,MACzDE,EAAO,+DAA+D5E,OAAO2E,GAC7EE,EAAgB,OAAO7E,OAAO4E,EAAM,OACpCE,EAAaJ,EAAWK,QAAQC,KAAI,SAAUzT,GAChD,MAAO,iBAAiByO,OAAO0E,EAAWO,YAAc,IAAIjF,OAAOzO,EAAQ,UAE7E,MAAO,CAAC6H,GAAS4G,OAAO8E,GAAY9E,OAAO,CAAC6E,IAAgBtP,KAAK,MAGnE,MAAO,CAAC6D,GAAS7D,KAAK,QAKlB;;;;gCAKA,SAAUnE,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACD,IAAI0K,EAAmG5K,oFAAuG,wEAC1M6K,EAAwH7K,EAAoBz2G,EAAEqhH,GAC9IwpB,EAA+Up0B,wVAA2W,4TAI/sBrpH,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEPk0H,IAA2GupB,EAAsV,QAAGz9I,GAIpbupH,EAA6B,QAAKk0B,EAAsV,QAAErpB,QAAU,IAI3Z;;;;8BAKA,SAAUt0H,EAAQC,EAASspH,GAEjC,aAGA,IACMl8G,EADFC,EAEK,WAUL,YAToB,IAATD,IAMTA,EAAOE,QAAQtL,QAAUiF,UAAYA,SAASsG,MAAQvL,OAAOwL,OAGxDJ,GAIPK,EAAY,WACd,IAAIL,EAAO,GACX,OAAO,SAAkBjN,GACvB,QAA4B,IAAjBiN,EAAKjN,GAAyB,CACvC,IAAIuN,EAAczG,SAAS0G,cAAcxN,GAEzC,GAAI6B,OAAO4L,mBAAqBF,aAAuB1L,OAAO4L,kBAC5D,IAGEF,EAAcA,EAAYG,gBAAgBC,KAC1C,MAAOC,GAEPL,EAAc,KAIlBN,EAAKjN,GAAUuN,EAGjB,OAAON,EAAKjN,IApBA,GAwBZ6N,EAAc,GAElB,SAASC,EAAqBC,GAG5B,IAFA,IAAI/G,GAAU,EAEL1B,EAAI,EAAGA,EAAIuI,EAAYrI,OAAQF,IACtC,GAAIuI,EAAYvI,GAAGyI,aAAeA,EAAY,CAC5C/G,EAAS1B,EACT,MAIJ,OAAO0B,EAGT,SAASgH,EAAaC,EAAMnO,GAI1B,IAHA,IAAIoO,EAAa,GACbC,EAAc,GAET7I,EAAI,EAAGA,EAAI2I,EAAKzI,OAAQF,IAAK,CACpC,IAAI8I,EAAOH,EAAK3I,GACZ+I,EAAKvO,EAAQwO,KAAOF,EAAK,GAAKtO,EAAQwO,KAAOF,EAAK,GAClDG,EAAQL,EAAWG,IAAO,EAC1BN,EAAa,GAAGS,OAAOH,EAAI,KAAKG,OAAOD,GAC3CL,EAAWG,GAAME,EAAQ,EACzB,IAAIE,EAAQX,EAAqBC,GAC7B3I,EAAM,CACRsJ,IAAKN,EAAK,GACVO,MAAOP,EAAK,GACZQ,UAAWR,EAAK,KAGH,IAAXK,GACFZ,EAAYY,GAAOI,aACnBhB,EAAYY,GAAOK,QAAQ1J,IAE3ByI,EAAYkB,KAAK,CACfhB,WAAYA,EACZe,QAASE,EAAS5J,EAAKtF,GACvB+O,WAAY,IAIhBV,EAAYY,KAAKhB,GAGnB,OAAOI,EAGT,SAASc,EAAmBnP,GAC1B,IAAI0L,EAAQ1E,SAASoI,cAAc,SAC/BC,EAAarP,EAAQqP,YAAc,GAEvC,QAAgC,IAArBA,EAAWC,MAAuB,CAC3C,IAAIA,EAAgB+5G,EAAoBuL,GAEpCtlH,IACFD,EAAWC,MAAQA,GAQvB,GAJA3M,OAAO4M,KAAKF,GAAYhK,SAAQ,SAAUlF,GACxCuL,EAAM8D,aAAarP,EAAKkP,EAAWlP,OAGP,mBAAnBH,EAAQyP,OACjBzP,EAAQyP,OAAO/D,OACV,CACL,IAAIxL,EAASsN,EAAUxN,EAAQyP,QAAU,QAEzC,IAAKvP,EACH,MAAM,IAAIwP,MAAM,2GAGlBxP,EAAO0L,YAAYF,GAGrB,OAAOA,EAcT,IACMiE,EADFC,GACED,EAAY,GACT,SAAiBhB,EAAOkB,GAE7B,OADAF,EAAUhB,GAASkB,EACZF,EAAUG,OAAOzC,SAASpJ,KAAK,QAI1C,SAAS8L,EAAoBrE,EAAOiD,EAAOqB,EAAQ1K,GACjD,IAAIsJ,EAAMoB,EAAS,GAAK1K,EAAIuJ,MAAQ,UAAUH,OAAOpJ,EAAIuJ,MAAO,MAAMH,OAAOpJ,EAAIsJ,IAAK,KAAOtJ,EAAIsJ,IAIjG,GAAIlD,EAAMuE,WACRvE,EAAMuE,WAAWC,QAAUN,EAAYjB,EAAOC,OACzC,CACL,IAAIuB,EAAUnJ,SAASoJ,eAAexB,GAClCyB,EAAa3E,EAAM2E,WAEnBA,EAAW1B,IACbjD,EAAM4E,YAAYD,EAAW1B,IAG3B0B,EAAW3K,OACbgG,EAAM6E,aAAaJ,EAASE,EAAW1B,IAEvCjD,EAAME,YAAYuE,IAKxB,SAASK,EAAW9E,EAAO1L,EAASsF,GAClC,IAAIsJ,EAAMtJ,EAAIsJ,IACVC,EAAQvJ,EAAIuJ,MACZC,EAAYxJ,EAAIwJ,UAepB,GAbID,EACFnD,EAAM8D,aAAa,QAASX,GAE5BnD,EAAM+E,gBAAgB,SAGpB3B,GAA6B,oBAAT4B,OACtB9B,GAAO,uDAAuDF,OAAOgC,KAAKC,SAASC,mBAAmBC,KAAKC,UAAUhC,MAAe,QAMlIpD,EAAMuE,WACRvE,EAAMuE,WAAWC,QAAUtB,MACtB,CACL,KAAOlD,EAAMqF,YACXrF,EAAM4E,YAAY5E,EAAMqF,YAG1BrF,EAAME,YAAY5E,SAASoJ,eAAexB,KAI9C,IAAIoC,EAAY,KACZC,EAAmB,EAEvB,SAAS/B,EAAS5J,EAAKtF,GACrB,IAAI0L,EACAwF,EACAlB,EAEJ,GAAIhQ,EAAQgR,UAAW,CACrB,IAAIG,EAAaF,IACjBvF,EAAQsF,IAAcA,EAAY7B,EAAmBnP,IACrDkR,EAASnB,EAAoBlL,KAAK,KAAM6G,EAAOyF,GAAY,GAC3DnB,EAASD,EAAoBlL,KAAK,KAAM6G,EAAOyF,GAAY,QAE3DzF,EAAQyD,EAAmBnP,GAC3BkR,EAASV,EAAW3L,KAAK,KAAM6G,EAAO1L,GAEtCgQ,EAAS,YAxFb,SAA4BtE,GAE1B,GAAyB,OAArBA,EAAM0F,WACR,OAAO,EAGT1F,EAAM0F,WAAWd,YAAY5E,GAmFzB2F,CAAmB3F,IAKvB,OADAwF,EAAO5L,GACA,SAAqBgM,GAC1B,GAAIA,EAAQ,CACV,GAAIA,EAAO1C,MAAQtJ,EAAIsJ,KAAO0C,EAAOzC,QAAUvJ,EAAIuJ,OAASyC,EAAOxC,YAAcxJ,EAAIwJ,UACnF,OAGFoC,EAAO5L,EAAMgM,QAEbtB,KAKNlQ,EAAOC,QAAU,SAAUoO,EAAMnO,IAC/BA,EAAUA,GAAW,IAGRgR,WAA0C,kBAAtBhR,EAAQgR,YACvChR,EAAQgR,UAAY5D,KAItB,IAAImE,EAAkBrD,EADtBC,EAAOA,GAAQ,GAC0BnO,GACzC,OAAO,SAAgBwR,GAGrB,GAFAA,EAAUA,GAAW,GAE2B,mBAA5C7O,OAAOhC,UAAUmE,SAASrC,KAAK+O,GAAnC,CAIA,IAAK,IAAIhM,EAAI,EAAGA,EAAI+L,EAAgB7L,OAAQF,IAAK,CAC/C,IACImJ,EAAQX,EADKuD,EAAgB/L,IAEjCuI,EAAYY,GAAOI,aAKrB,IAFA,IAAI0C,EAAqBvD,EAAasD,EAASxR,GAEtC0R,EAAK,EAAGA,EAAKH,EAAgB7L,OAAQgM,IAAM,CAClD,IAEIC,EAAS3D,EAFKuD,EAAgBG,IAIK,IAAnC3D,EAAY4D,GAAQ5C,aACtBhB,EAAY4D,GAAQ3C,UAEpBjB,EAAY6D,OAAOD,EAAQ,IAI/BJ,EAAkBE,MAMhB;;;;gDAKA,SAAU3R,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACSF,EAAoBpsE,EAAEssE,EAAqB,UAAU,WAAa,OAAOxqF,KACzEsqF,EAAoBpsE,EAAEssE,EAAqB,mBAAmB,WAAa,OAAOvqF,KACjH,IAAID,EAAS,WACX,IACI4B,EADM1+B,KACGo/B,eAEb,OAHUp/B,KAEGq/B,MAAMC,IAAMZ,GAEvB,MACA,CACEa,YAAa,UACbqhB,MAAO,OAPD5gD,KAOcu7I,QAAQ9iI,cAC5B+mB,MAAO,CAAElzB,GAAI,gBAEf,CAVQtM,KAUH65C,GAAG,YACR,IAGA9c,EAAkB,GACtBD,EAAO4C,eAAgB,GAMjB;;;;gCAKA,SAAU7hC,EAAQypH,EAAqBF,GAE7C,aASA,SAASjrF,EACP43F,EACAj3F,EACAC,EACAi3F,EACAC,EACA33F,EACAE,EACAC,GAGA,IAqBII,EArBA9+B,EAAmC,mBAAlBg2H,EACjBA,EAAch2H,QACdg2H,EAsDJ,GAnDIj3F,IACF/+B,EAAQ++B,OAASA,EACjB/+B,EAAQg/B,gBAAkBA,EAC1Bh/B,EAAQi/B,WAAY,GAIlBg3F,IACFj2H,EAAQk/B,YAAa,GAInBX,IACFv+B,EAAQm/B,SAAW,UAAYZ,GAI7BE,GACFK,EAAO,SAAUM,IAEfA,EACEA,GACCn9B,KAAKo9B,QAAUp9B,KAAKo9B,OAAOC,YAC3Br9B,KAAK4iB,QAAU5iB,KAAK4iB,OAAOwa,QAAUp9B,KAAK4iB,OAAOwa,OAAOC,aAEZ,oBAAxBC,sBACrBH,EAAUG,qBAGR22F,GACFA,EAAazzH,KAAKR,KAAMm9B,GAGtBA,GAAWA,EAAQI,uBACrBJ,EAAQI,sBAAsBC,IAAIhB,IAKtCz+B,EAAQ0/B,aAAeZ,GACdo3F,IACTp3F,EAAOJ,EACH,WACAw3F,EAAazzH,KACXR,MACCjC,EAAQk/B,WAAaj9B,KAAK4iB,OAAS5iB,MAAM09B,MAAMC,SAASC,aAG3Dq2F,GAGFp3F,EACF,GAAI9+B,EAAQk/B,WAAY,CAGtBl/B,EAAQ66G,cAAgB/7E,EAExB,IAAIgB,EAAiB9/B,EAAQ++B,OAC7B/+B,EAAQ++B,OAAS,SAAmCgB,EAAGX,GAErD,OADAN,EAAKr8B,KAAK28B,GACHU,EAAeC,EAAGX,QAEtB,CAEL,IAAIY,EAAWhgC,EAAQigC,aACvBjgC,EAAQigC,aAAeD,EACnB,GAAGtxB,OAAOsxB,EAAUlB,GACpB,CAACA,GAIT,MAAO,CACL/+B,QAASi2H,EACTh2H,QAASA,GAjGbqpH,EAAoB1kD,EAAE4kD,GACSF,EAAoBpsE,EAAEssE,EAAqB,WAAW,WAAa,OAAOnrF,MAuGnG;;;;gCAKA,SAAUt+B,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACD,IAAIm0B,EAAuFr0B,iEAAoF,mFAC3Ks0B,EAAqEt0B,+CAAkE,iEAEvIgN,GAD8IhN,gFAAmG,kGACtJA,4EAA+F,iEAC1Lu0B,EAAmFv0B,6DAAgF,+EACnKw0B,EAAwGx0B,EAAoBz2G,EAAEgrI,GASnJ57G,EAAYr/B,OAAO0zH,EAAkG,QAAzG1zH,CACdg7I,EAA4E,QAC5ED,EAA6F,OAC7FA,EAAsG,iBACtG,EACA,KACA,WACA,MAMwG,mBAA/FG,EAAyFt2I,GAAkBs2I,IAA2F77G,GAIjNA,EAAUhiC,QAAQw2H,OAAS,qCACEjN,EAA6B,QAAKvnF,EAAiB,SAI1E;;;;8BAKA,SAAUliC,EAAQC,KAMlB;;;;gCAKA,SAAUD,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACD,IAAIu0B,EAAoKz0B,iJAAoK,kJAC3RE,EAA6B,QAAKu0B,EAA4K,SAI9Q;;;;0BAKA,SAAUh+I,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACwXF,wYAA2Z,qWAKnyB;;;;gDAKA,SAAUvpH,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACD,IAAIw0B,EAAwN10B,+MAAkO,oLACrbA,EAAoBpsE,EAAEssE,EAAqB,UAAU,WAAa,OAAOw0B,EAA8N,UAEvS10B,EAAoBpsE,EAAEssE,EAAqB,mBAAmB,WAAa,OAAOw0B,EAAuO,oBAMjV;;;;gCAKA,SAAUj+I,EAAQypH,EAAqBF,GAE7C,aACAA,EAAoB1kD,EAAE4kD,GACD,IAAIy0B,EAAwC30B,kBAAqC;;;;;;;;;;;;;;;;;;;;GAsBzEE,EAA6B,QAAKy0B,EAAgD,YAr4B7Gl+I,EAAOC,QAAUogD,K,iBCFnB;;;;;;AAMgErgD,EAAOC,QAG/D,WAAe,aAEvB,IAAIk+I,EAAkB,WACpBh8I,KAAKi8I,YAAc,GACnBj8I,KAAKk8I,WAAa,GAClBl8I,KAAKm8I,cAAe,GAGlBxvG,EAAqB,CAAEjlC,UAAW,IAOtCilC,EAAmBjlC,UAAU9G,IAAM,WACjC,OAAOZ,KAAKk8I,YAQdvvG,EAAmBjlC,UAAU3B,IAAM,SAAUnH,GAC3CoB,KAAKk8I,WAAat9I,EAASA,EAAQ,IAAO,IAU5Co9I,EAAgBt9I,UAAU09I,UAAY,SAAoBC,GACxD,MAAQ,GAAMr8I,KAAe,WAAIq8I,GAWnCL,EAAgBt9I,UAAU49I,OAAS,SAAiBD,EAAOE,EAAUz1I,GACnE,IAAI5I,EAAM8B,KAAKo8I,UAAUC,GACrBz9I,EAAQkI,GAAQ,CAACiE,MAAOrK,QAAQqzB,SAASjtB,GACzC8H,KAAKC,UAAU0tI,GACfA,EAEJz8I,OAAOqvG,aAAavpB,QAAQ1nF,EAAKU,IAUnCo9I,EAAgBt9I,UAAU89I,OAAS,SAAiBH,GAClD,IAAIn+I,EAAM8B,KAAKo8I,UAAUC,GAEzB,OAAOv8I,OAAOqvG,aAAajxG,IAW7B89I,EAAgBt9I,UAAUkC,IAAM,SAAcy7I,EAAOjwD,EAAcqwD,GAKjE,QAHwB,IAAjBrwD,IAA0BA,EAAe,WACzB,IAAhBqwD,IAAyBA,EAAcn8I,SAEzCN,KAAKm8I,aACR,OAAO,KAGT,GAAIn8I,KAAKw8I,OAAOH,GAAQ,CACtB,IAAIv1I,EAAO21I,EAEX,IAAK,IAAIv+I,KAXI8B,KAWUi8I,YACrB,GAAI/9I,IAAQm+I,EAAO,CACjBv1I,EAbS9G,KAaKi8I,YAAY/9I,GAAK4I,KAC/B,MAIJ,OAAO9G,KAAK08I,SAAS51I,EAAM9G,KAAKw8I,OAAOH,IAGzC,OAAwB,OAAjBjwD,EAAwBA,EAAe,MAUhD4vD,EAAgBt9I,UAAUqH,IAAM,SAAcs2I,EAAOz9I,GAGnD,IAAKoB,KAAKm8I,aACR,OAAO,KAGT,IAAK,IAAIj+I,KANM8B,KAMQi8I,YAAa,CAClC,IAAIn1I,EAPS9G,KAOKi8I,YAAY/9I,GAAK4I,KAEnC,GAAK5I,IAAQm+I,EAGX,OAZWr8I,KAUJs8I,OAAOD,EAAOz9I,EAAOkI,GAErBlI,EAMX,OAFAoB,KAAKs8I,OAAOD,EAAOz9I,GAEZA,GAQTo9I,EAAgBt9I,UAAUqP,OAAS,SAAiBsuI,GAClD,OAAKr8I,KAAKm8I,aAIHr8I,OAAOqvG,aAAappB,WAAWs2D,GAH7B,MAaXL,EAAgBt9I,UAAUi+I,YAAc,SAAsBz+I,EAAK4I,EAAMslF,QAC/C,IAAjBA,IAA0BA,OAAettF,GAEhDgI,EAAOA,GAAQxG,OAEfN,KAAKi8I,YAAY/9I,GAAO,CAAE4I,KAAMA,GAE3B9G,KAAKw8I,OAAOt+I,IAAyB,OAAjBkuF,GACvBpsF,KAAKs8I,OAAOp+I,EAAKkuF,EAActlF,IAYnCk1I,EAAgBt9I,UAAUg+I,SAAW,SAAmB51I,EAAMlI,GAC5D,OAAQkI,GACN,KAAKsE,QACH,MAAiB,SAAVxM,EACT,KAAK2hC,OACH,OAAOrf,WAAWtiB,GACpB,KAAKmM,MACH,IACE,IAAIiJ,EAAQpF,KAAKoyE,MAAMpiF,GAEvB,OAAOmM,MAAMjI,QAAQkR,GAASA,EAAQ,GACtC,MAAOnI,GACP,MAAO,GAEX,KAAKnL,OACH,IACE,OAAOkO,KAAKoyE,MAAMpiF,GAClB,MAAOiN,GACP,MAAO,GAEX,QACE,OAAOjN,IAIb8B,OAAO6H,iBAAkByzI,EAAgBt9I,UAAWiuC,GAEpD,IAAIiwG,EAAkB,IAAIZ,EA+F1B,MA7FY,CAOVn8G,QAAS,SAAUC,EAAK/hC,GAGtB,QAFiB,IAAZA,IAAqBA,EAAU,SAEb,IAAZ2V,KAEPA,EAAQmpI,QACRnpI,EAAQopI,cACPppI,EAAQ22B,KAA+B,WAAxB32B,EAAQ22B,IAAIC,SAJhC,CAUA,IAAIyyG,GAAc,EAElB,IACE,IAAIlsI,EAAO,4BAEX/Q,OAAOqvG,aAAavpB,QAAQ/0E,EAAMA,GAClC/Q,OAAOqvG,aAAappB,WAAWl1E,GAC/B,MAAOhF,GACPkxI,GAAc,EACdH,EAAgBT,cAAe,EAE/Bv1H,QAAQzmB,MAAM,kCAGhB,IAAIV,EAAO1B,EAAQ0B,MAAQ,eACvBmD,EAAO7E,EAAQ6E,KAEf7E,EAAQ2J,YACVk1I,EAAgBl1I,UAAY3J,EAAQ2J,WAGtCo4B,EAAIgnB,MAAM,CACR9oB,aAAc,WACZ,IAAIyc,EAASz6C,KAER+8I,GAID/8I,KAAK29B,SAASl+B,IAChBiB,OAAO4M,KAAKtN,KAAK29B,SAASl+B,IAAO2D,SAAQ,SAAUlF,GACjD,IAAI6pC,EAAS0S,EAAO9c,SAASl+B,GAAMvB,GAC/BsrD,EAAM,CAACzhB,EAAOjhC,KAAMihC,EAAO5J,SAC3Br3B,EAAO0iD,EAAI,GACX4iC,EAAe5iC,EAAI,GAMvB,GAJAozF,EAAgBD,YAAYz+I,EAAK4I,EAAMslF,GAEpB1rF,OAAOpD,yBAAyBs/I,EAAiB1+I,GAWxD4hC,EAAIiI,OAAOE,QACrBrhB,QAAQm3G,IAAK7/H,EAAM,+CAVF,CACjB,IAAIwoB,EAAO,CACT9lB,IAAK,WAAc,OAAOk/B,EAAIqvE,aAAavuG,IAAI1C,EAAKkuF,IACpDrmF,IAAK,SAAUhD,GAAO,OAAO+8B,EAAIqvE,aAAappG,IAAI7H,EAAK6E,IACvDqE,cAAc,GAGhB1G,OAAOC,eAAei8I,EAAiB1+I,EAAKwoB,GAC5CoZ,EAAIoqB,KAAKC,eAAeyyF,EAAiB1+I,EAAKkuF,IAK3CxpF,GAAQmlC,EAAOnlC,QAAyB,IAAhBmlC,EAAOnlC,OAClC63C,EAAO9c,SAASoS,SAAW0K,EAAO9c,SAASoS,UAAY,GAElD0K,EAAO9c,SAASoS,SAAS7xC,KAC5Bu8C,EAAO9c,SAASoS,SAAS7xC,GAAO,CAC9B0C,IAAK,WAAc,OAAOk/B,EAAIqvE,aAAajxG,IAC3C6H,IAAK,SAAUhD,GAAO+8B,EAAIqvE,aAAajxG,GAAO6E,YAS5D+8B,EAAIrgC,GAAQm9I,EACZ98G,EAAIphC,UAAW,IAAMe,GAASm9I,KApS+C1+F,K","file":"vue-vendors-settings-apps-settings-users-0d73f1e56667b71e4227.js?v=9389465a236b4d8c26e9","sourcesContent":["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","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\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 es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\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 hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\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\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(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","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\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 var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\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 || inspectSource(this);\n});\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\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 requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\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 freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/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 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 shared = require('../internals/shared-store');\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 = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\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 metadata.facade = it;\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 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","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\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = false;\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 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 = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\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","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\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');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","module.exports = {};\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/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","module.exports = {};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\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\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var bind = require('../internals/function-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, filterOut }` 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 IS_FILTER_OUT = TYPE == 7;\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 || IS_FILTER_OUT ? 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 switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\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.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\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 -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\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.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !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 internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\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\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\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.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/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.es/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.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\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 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 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.10.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\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 toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/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.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\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","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\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 classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\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 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 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.es/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","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\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(integer, 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 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.es/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 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.es/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.es/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 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","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\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 -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\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, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\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 // eslint-disable-next-line regexp/no-empty-group -- required for testing\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\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\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 re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\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 === RegExp.prototype.exec) {\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 REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\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 }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/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","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 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","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // eslint-disable-next-line es/no-symbol -- required for testing\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar 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 = TO_STRING_TAG_SUPPORT ? classofRaw : 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","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\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.es/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","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 store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\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 regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', 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\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else 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","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/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","'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');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !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.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\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","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\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 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 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","\"use strict\";\n\nexports.__esModule = true;\nexports.inherits = inherits;\nfunction inherits(parent, child) {\n\tvar props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\tvar extended = Object.create(parent.prototype);\n\tfor (var p in props) {\n\t\textended[p] = props[p];\n\t}\n\textended.constructor = child;\n\tchild.prototype = extended;\n\treturn child;\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 -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\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.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\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 es/no-array-from, no-throw-literal -- required for testing\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 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","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\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","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 // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\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 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 global = require('../internals/global');\n\nmodule.exports = global;\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","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\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.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\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","'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","'use strict';\nvar fails = require('../internals/fails');\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.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\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\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\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.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\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","// 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 bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\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 index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\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 wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","function getInternetExplorerVersion() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n } // other browser\n\n\n return -1;\n}\n\n//\nvar isIE;\n\nfunction initCompat() {\n if (!initCompat.init) {\n initCompat.init = true;\n isIE = getInternetExplorerVersion() !== -1;\n }\n}\n\nvar script = {\n name: 'ResizeObserver',\n props: {\n emitOnMount: {\n type: Boolean,\n default: false\n },\n ignoreWidth: {\n type: Boolean,\n default: false\n },\n ignoreHeight: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n initCompat();\n this.$nextTick(function () {\n _this._w = _this.$el.offsetWidth;\n _this._h = _this.$el.offsetHeight;\n\n if (_this.emitOnMount) {\n _this.emitSize();\n }\n });\n var object = document.createElement('object');\n this._resizeObject = object;\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.onload = this.addResizeHandlers;\n object.type = 'text/html';\n\n if (isIE) {\n this.$el.appendChild(object);\n }\n\n object.data = 'about:blank';\n\n if (!isIE) {\n this.$el.appendChild(object);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify: function compareAndNotify() {\n if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n this.emitSize();\n }\n },\n emitSize: function emitSize() {\n this.$emit('notify', {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers: function addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\n this.compareAndNotify();\n },\n removeResizeHandlers: function removeResizeHandlers() {\n if (this._resizeObject && this._resizeObject.onload) {\n if (!isIE && this._resizeObject.contentDocument) {\n this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n }\n\n this.$el.removeChild(this._resizeObject);\n this._resizeObject.onload = null;\n this._resizeObject = null;\n }\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"resize-observer\",\n attrs: {\n tabindex: \"-1\"\n }\n });\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-8859cc6c\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction install(Vue) {\n // eslint-disable-next-line vue/component-definition-name-casing\n Vue.component('resize-observer', __vue_component__);\n Vue.component('ResizeObserver', __vue_component__);\n}\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.0.1\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { __vue_component__ as ResizeObserver, install };\n//# sourceMappingURL=vue-resize.esm.js.map\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\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","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\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","'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","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","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","// 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 toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\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 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 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","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 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 fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !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 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.es/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';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\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","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","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\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\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\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} : $assign;\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.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.12';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecessary `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\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.es/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","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","\"use strict\";\n\nrequire(\"core-js/modules/es.object.to-string\");\n\nrequire(\"core-js/modules/es.regexp.exec\");\n\nrequire(\"core-js/modules/es.regexp.to-string\");\n\nrequire(\"core-js/modules/es.string.replace\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getGettextBuilder = getGettextBuilder;\n\nvar _nodeGettext = _interopRequireDefault(require(\"node-gettext\"));\n\nvar _ = require(\".\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar GettextBuilder = /*#__PURE__*/function () {\n function GettextBuilder() {\n _classCallCheck(this, GettextBuilder);\n\n this.translations = {};\n this.debug = false;\n }\n\n _createClass(GettextBuilder, [{\n key: \"setLanguage\",\n value: function setLanguage(language) {\n this.locale = language;\n return this;\n }\n }, {\n key: \"detectLocale\",\n value: function detectLocale() {\n return this.setLanguage((0, _.getLanguage)().replace('-', '_'));\n }\n }, {\n key: \"addTranslation\",\n value: function addTranslation(language, data) {\n this.translations[language] = data;\n return this;\n }\n }, {\n key: \"enableDebugMode\",\n value: function enableDebugMode() {\n this.debug = true;\n return this;\n }\n }, {\n key: \"build\",\n value: function build() {\n return new GettextWrapper(this.locale || 'en', this.translations, this.debug);\n }\n }]);\n\n return GettextBuilder;\n}();\n\nvar GettextWrapper = /*#__PURE__*/function () {\n function GettextWrapper(locale, data, debug) {\n _classCallCheck(this, GettextWrapper);\n\n this.gt = new _nodeGettext.default({\n debug: debug,\n sourceLocale: 'en'\n });\n\n for (var key in data) {\n this.gt.addTranslations(key, 'messages', data[key]);\n }\n\n this.gt.setLocale(locale);\n }\n\n _createClass(GettextWrapper, [{\n key: \"subtitudePlaceholders\",\n value: function subtitudePlaceholders(translated, vars) {\n return translated.replace(/{([^{}]*)}/g, function (a, b) {\n var r = vars[b];\n\n if (typeof r === 'string' || typeof r === 'number') {\n return r.toString();\n } else {\n return a;\n }\n });\n }\n }, {\n key: \"gettext\",\n value: function gettext(original) {\n var placeholders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.subtitudePlaceholders(this.gt.gettext(original), placeholders);\n }\n }, {\n key: \"ngettext\",\n value: function ngettext(singular, plural, count) {\n var placeholders = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return this.subtitudePlaceholders(this.gt.ngettext(singular, plural, count).replace(/%n/g, count.toString()), placeholders);\n }\n }]);\n\n return GettextWrapper;\n}();\n\nfunction getGettextBuilder() {\n return new GettextBuilder();\n}\n//# sourceMappingURL=gettext.js.map","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\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 wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\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","// `Symbol.prototype.description` getter\n// https://tc39.es/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.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\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/well-known-symbol-wrapped');\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 $stringify = getBuiltIn('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 = USE_SYMBOL_AS_UID ? 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.es/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 redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\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 wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\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\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.es/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.es/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.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/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.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\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 $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/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.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.subscribe = subscribe;\nexports.unsubscribe = unsubscribe;\nexports.emit = emit;\n\nvar _ProxyBus = require(\"./ProxyBus\");\n\nvar _SimpleBus = require(\"./SimpleBus\");\n\nfunction getBus() {\n if (typeof window.OC !== 'undefined' && window.OC._eventBus && typeof window._nc_event_bus === 'undefined') {\n console.warn('found old event bus instance at OC._eventBus. Update your version!');\n window._nc_event_bus = window.OC._eventBus;\n } // Either use an existing event bus instance or create one\n\n\n if (typeof window._nc_event_bus !== 'undefined') {\n return new _ProxyBus.ProxyBus(window._nc_event_bus);\n } else {\n return window._nc_event_bus = new _SimpleBus.SimpleBus();\n }\n}\n\nvar bus = getBus();\n/**\n * Register an event listener\n *\n * @param name name of the event\n * @param handler callback invoked for every matching event emitted on the bus\n */\n\nfunction subscribe(name, handler) {\n bus.subscribe(name, handler);\n}\n/**\n * Unregister a previously registered event listener\n *\n * Note: doesn't work with anonymous functions (closures). Use method of an object or store listener function in variable.\n *\n * @param name name of the event\n * @param handler callback passed to `subscribed`\n */\n\n\nfunction unsubscribe(name, handler) {\n bus.unsubscribe(name, handler);\n}\n/**\n * Emit an event\n *\n * @param name name of the event\n * @param event event payload\n */\n\n\nfunction emit(name, event) {\n bus.emit(name, event);\n}\n//# sourceMappingURL=index.js.map","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.es/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.es/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","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.es/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';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","import _typeof from '@babel/runtime/helpers/typeof';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport Popper from 'popper.js';\nimport isEqual from 'lodash/isEqual';\nimport { ResizeObserver } from 'vue-resize';\nimport merge from 'lodash/merge';\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n if (classList.indexOf(newClass) === -1) {\n classList.push(newClass);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n var index = classList.indexOf(newClass);\n\n if (index !== -1) {\n classList.splice(index, 1);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip = /*#__PURE__*/function () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement=bottom\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n * @param {String} [options.template='<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @param {string} [options.ariaId] Id used for accessibility\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(_reference, _options) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n _defineProperty(this, \"_events\", []);\n\n _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this._tooltipNode.addEventListener(evt.type, callback);\n\n return true;\n }\n\n return false;\n });\n\n // apply user options over default ones\n _options = _objectSpread$2(_objectSpread$2({}, DEFAULT_OPTIONS), _options);\n _reference.jquery && (_reference = _reference[0]);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this); // cache reference and options\n\n this.reference = _reference;\n this.options = _options; // set initial state\n\n this._isOpen = false;\n\n this._init();\n } //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n _createClass(Tooltip, [{\n key: \"show\",\n value: function show() {\n this._show(this.reference, this.options);\n }\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n this._hide();\n }\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._dispose();\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n }\n }, {\n key: \"setClasses\",\n value: function setClasses(classes) {\n this._classes = classes;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this.options.title = content;\n\n if (this._tooltipNode) {\n this._setContent(content, this.options);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var classesUpdated = false;\n var classes = options && options.classes || directive.options.defaultClass;\n\n if (!isEqual(this._classes, classes)) {\n this.setClasses(classes);\n classesUpdated = true;\n }\n\n options = getOptions(options);\n var needPopperUpdate = false;\n var needRestart = false;\n\n if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n needPopperUpdate = true;\n }\n\n if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n needRestart = true;\n }\n\n for (var key in options) {\n this.options[key] = options[key];\n }\n\n if (this._tooltipNode) {\n if (needRestart) {\n var isOpen = this._isOpen;\n this.dispose();\n\n this._init();\n\n if (isOpen) {\n this.show();\n }\n } else if (needPopperUpdate) {\n this.popperInstance.update();\n }\n }\n } //\n // Private methods\n //\n\n }, {\n key: \"_init\",\n value: function _init() {\n // get events list\n var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n this._isDisposed = false;\n this._enableDocumentTouch = events.indexOf('manual') === -1;\n events = events.filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }); // set event listeners\n\n this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n this.$_originalTitle = this.reference.getAttribute('title');\n this.reference.removeAttribute('title');\n this.reference.setAttribute('data-original-title', this.$_originalTitle);\n }\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLelement} tooltipNode\n */\n\n }, {\n key: \"_create\",\n value: function _create(reference, template) {\n var _this2 = this;\n\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n tooltipNode.id = this.options.ariaId || \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n // The attribute will be switched in a next frame so\n // CSS transitions can play\n\n tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n tooltipNode.addEventListener('mouseenter', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n tooltipNode.addEventListener('click', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n } // return the generated tooltip node\n\n\n return tooltipNode;\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(content, options) {\n var _this3 = this;\n\n this.asyncContent = false;\n\n this._applyContent(content, options).then(function () {\n if (!_this3.popperInstance) return;\n\n _this3.popperInstance.update();\n });\n }\n }, {\n key: \"_applyContent\",\n value: function _applyContent(title, options) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n var allowHtml = options.html;\n var rootNode = _this4._tooltipNode;\n if (!rootNode) return;\n var titleNode = rootNode.querySelector(_this4.options.innerSelector);\n\n if (title.nodeType === 1) {\n // if title is a node, append it only if allowHtml is true\n if (allowHtml) {\n while (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(title);\n }\n } else if (typeof title === 'function') {\n // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n var result = title();\n\n if (result && typeof result.then === 'function') {\n _this4.asyncContent = true;\n options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n if (options.loadingContent) {\n _this4._applyContent(options.loadingContent, options);\n }\n\n result.then(function (asyncResult) {\n options.loadingClass && removeClasses(rootNode, options.loadingClass);\n return _this4._applyContent(asyncResult, options);\n }).then(resolve).catch(reject);\n } else {\n _this4._applyContent(result, options).then(resolve).catch(reject);\n }\n\n return;\n } else {\n // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n }\n\n resolve();\n });\n }\n }, {\n key: \"_show\",\n value: function _show(reference, options) {\n if (options && typeof options.container === 'string') {\n var container = document.querySelector(options.container);\n if (!container) return;\n }\n\n clearTimeout(this._disposeTimer);\n options = Object.assign({}, options);\n delete options.offset;\n var updateClasses = true;\n\n if (this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n updateClasses = false;\n }\n\n var result = this._ensureShown(reference, options);\n\n if (updateClasses && this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n }\n\n addClasses(reference, ['v-tooltip-open']);\n return result;\n }\n }, {\n key: \"_ensureShown\",\n value: function _ensureShown(reference, options) {\n var _this5 = this;\n\n // don't show if it's already visible\n if (this._isOpen) {\n return this;\n }\n\n this._isOpen = true;\n openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n if (this._tooltipNode) {\n this._tooltipNode.style.display = '';\n\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n this.popperInstance.enableEventListeners();\n this.popperInstance.update();\n\n if (this.asyncContent) {\n this._setContent(options.title, options);\n }\n\n return this;\n } // get title\n\n\n var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n if (!title) {\n return this;\n } // create tooltip node\n\n\n var tooltipNode = this._create(reference, options.template);\n\n this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n var popperOptions = _objectSpread$2(_objectSpread$2({}, options.popperOptions), {}, {\n placement: options.placement\n });\n\n popperOptions.modifiers = _objectSpread$2(_objectSpread$2({}, popperOptions.modifiers), {}, {\n arrow: {\n element: this.options.arrowSelector\n }\n });\n\n if (options.boundariesElement) {\n popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n this._setContent(title, options); // Fix position\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed && _this5.popperInstance) {\n _this5.popperInstance.update(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed) {\n _this5._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n } else {\n _this5.dispose();\n }\n });\n } else {\n _this5.dispose();\n }\n });\n return this;\n }\n }, {\n key: \"_noLongerOpen\",\n value: function _noLongerOpen() {\n var index = openTooltips.indexOf(this);\n\n if (index !== -1) {\n openTooltips.splice(index, 1);\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide()\n /* reference, options */\n {\n var _this6 = this;\n\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n this._noLongerOpen(); // hide tooltipNode\n\n\n this._tooltipNode.style.display = 'none';\n\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this._disposeTimer);\n var disposeTime = directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this._disposeTimer = setTimeout(function () {\n if (_this6._tooltipNode) {\n _this6._tooltipNode.removeEventListener('mouseenter', _this6.hide);\n\n _this6._tooltipNode.removeEventListener('click', _this6.hide); // Don't remove popper instance, just the HTML element\n\n\n _this6._removeTooltipNode();\n }\n }, disposeTime);\n }\n\n removeClasses(this.reference, ['v-tooltip-open']);\n return this;\n }\n }, {\n key: \"_removeTooltipNode\",\n value: function _removeTooltipNode() {\n if (!this._tooltipNode) return;\n var parentNode = this._tooltipNode.parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this._tooltipNode);\n this.reference.removeAttribute('aria-describedby');\n }\n\n this._tooltipNode = null;\n }\n }, {\n key: \"_dispose\",\n value: function _dispose() {\n var _this7 = this;\n\n this._isDisposed = true;\n this.reference.removeAttribute('data-original-title');\n\n if (this.$_originalTitle) {\n this.reference.setAttribute('title', this.$_originalTitle);\n } // remove event listeners first to prevent any unexpected behaviour\n\n\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this7.reference.removeEventListener(event, func);\n });\n\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n this._removeTooltipNode();\n }\n } else {\n this._noLongerOpen();\n }\n\n return this;\n }\n }, {\n key: \"_findContainer\",\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n }\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltip\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: \"_append\",\n value: function _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(reference, events, options) {\n var _this8 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this8._isOpen === true) {\n return;\n }\n\n evt.usedByTooltip = true;\n\n _this8._scheduleShow(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n\n _this8._scheduleHide(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n }\n }, {\n key: \"_onDocumentTouch\",\n value: function _onDocumentTouch(event) {\n if (this._enableDocumentTouch) {\n this._scheduleHide(this.reference, this.options.delay, this.options, event);\n }\n }\n }, {\n key: \"_scheduleShow\",\n value: function _scheduleShow(reference, delay, options\n /*, evt */\n ) {\n var _this9 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n return _this9._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: \"_scheduleHide\",\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this10 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n if (_this10._isOpen === false) {\n return;\n }\n\n if (!_this10._tooltipNode.ownerDocument.body.contains(_this10._tooltipNode)) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (evt.type === 'mouseleave') {\n var isSet = _this10._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this10._hide(reference, options);\n }, computedDelay);\n }\n }]);\n\n return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', function (event) {\n for (var i = 0; i < openTooltips.length; i++) {\n openTooltips[i]._onDocumentTouch(event);\n }\n }, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar state = {\n enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n // Default tooltip placement relative to target element\n defaultPlacement: 'top',\n // Default CSS classes applied to the tooltip element\n defaultClass: 'vue-tooltip-theme',\n // Default CSS classes applied to the target element of the tooltip\n defaultTargetClass: 'has-tooltip',\n // Is the content HTML by default?\n defaultHtml: true,\n // Default HTML template of the tooltip element\n // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n // Change if the classes conflict with other libraries (for example bootstrap)\n defaultTemplate: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n // Selector used to get the arrow element in the tooltip template\n defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n // Selector used to get the inner content element in the tooltip template\n defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n // Delay (ms)\n defaultDelay: 0,\n // Default events that trigger the tooltip\n defaultTrigger: 'hover focus',\n // Default position offset (px)\n defaultOffset: 0,\n // Default container where the tooltip will be appended\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Class added when content is loading\n defaultLoadingClass: 'tooltip-loading',\n // Displayed when tooltip content is loading\n defaultLoadingContent: '...',\n // Hide on mouseover tooltip\n autoHide: true,\n // Close tooltip on click on tooltip target?\n defaultHideOnTargetClick: true,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5000,\n // Options for popover\n popover: {\n defaultPlacement: 'bottom',\n // Use the `popoverClass` prop for theming\n defaultClass: 'vue-popover-theme',\n // Base class (change if conflicts with other libraries)\n defaultBaseClass: 'tooltip popover',\n // Wrapper class (contains arrow and inner)\n defaultWrapperClass: 'wrapper',\n // Inner content class\n defaultInnerClass: 'tooltip-inner popover-inner',\n // Arrow class\n defaultArrowClass: 'tooltip-arrow popover-arrow',\n // Class added when popover is open\n defaultOpenClass: 'open',\n defaultDelay: 0,\n defaultTrigger: 'click',\n defaultOffset: 0,\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Hides if clicked outside of popover\n defaultAutoHide: true,\n // Update popper on content resize\n defaultHandleResize: true\n }\n};\nfunction getOptions(options) {\n var result = {\n placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n popperOptions: _objectSpread$1({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n };\n\n if (result.offset) {\n var typeofOffset = _typeof(result.offset);\n\n var offset = result.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n if (!result.popperOptions.modifiers) {\n result.popperOptions.modifiers = {};\n }\n\n result.popperOptions.modifiers.offset = {\n offset: offset\n };\n }\n\n if (result.trigger && result.trigger.indexOf('click') !== -1) {\n result.hideOnTargetClick = false;\n }\n\n return result;\n}\nfunction getPlacement(value, modifiers) {\n var placement = value.placement;\n\n for (var i = 0; i < positions.length; i++) {\n var pos = positions[i];\n\n if (modifiers[pos]) {\n placement = pos;\n }\n }\n\n return placement;\n}\nfunction getContent(value) {\n var type = _typeof(value);\n\n if (type === 'string') {\n return value;\n } else if (value && type === 'object') {\n return value.content;\n } else {\n return false;\n }\n}\nfunction createTooltip(el, value) {\n var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = getContent(value);\n var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n var opts = _objectSpread$1({\n title: content\n }, getOptions(_objectSpread$1(_objectSpread$1({}, _typeof(value) === 'object' ? value : {}), {}, {\n placement: getPlacement(value, modifiers)\n })));\n\n var tooltip = el._tooltip = new Tooltip(el, opts);\n tooltip.setClasses(classes);\n tooltip._vueEl = el; // Class on target\n\n var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n el._tooltipTargetClasses = targetClasses;\n addClasses(el, targetClasses);\n return tooltip;\n}\nfunction destroyTooltip(el) {\n if (el._tooltip) {\n el._tooltip.dispose();\n\n delete el._tooltip;\n delete el._tooltipOldShow;\n }\n\n if (el._tooltipTargetClasses) {\n removeClasses(el, el._tooltipTargetClasses);\n delete el._tooltipTargetClasses;\n }\n}\nfunction bind(el, _ref) {\n var value = _ref.value;\n _ref.oldValue;\n var modifiers = _ref.modifiers;\n var content = getContent(value);\n\n if (!content || !state.enabled) {\n destroyTooltip(el);\n } else {\n var tooltip;\n\n if (el._tooltip) {\n tooltip = el._tooltip; // Content\n\n tooltip.setContent(content); // Options\n\n tooltip.setOptions(_objectSpread$1(_objectSpread$1({}, value), {}, {\n placement: getPlacement(value, modifiers)\n }));\n } else {\n tooltip = createTooltip(el, value, modifiers);\n } // Manual show\n\n\n if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n el._tooltipOldShow = value.show;\n value.show ? tooltip.show() : tooltip.hide();\n }\n }\n}\nvar directive = {\n options: defaultOptions,\n bind: bind,\n update: bind,\n unbind: function unbind(el) {\n destroyTooltip(el);\n }\n};\n\nfunction addListeners(el) {\n el.addEventListener('click', onClick);\n el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n passive: true\n } : false);\n}\n\nfunction removeListeners(el) {\n el.removeEventListener('click', onClick);\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n var el = event.currentTarget;\n event.closePopover = !el.$_vclosepopover_touch;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n if (event.changedTouches.length === 1) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = true;\n var touch = event.changedTouches[0];\n el.$_vclosepopover_touchPoint = touch;\n el.addEventListener('touchend', onTouchEnd);\n el.addEventListener('touchcancel', onTouchCancel);\n }\n}\n\nfunction onTouchEnd(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n\n if (event.changedTouches.length === 1) {\n var touch = event.changedTouches[0];\n var firstTouch = el.$_vclosepopover_touchPoint;\n event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n }\n}\n\nfunction onTouchCancel(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n bind: function bind(el, _ref) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n }\n },\n update: function update(el, _ref2) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (value !== oldValue) {\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n } else {\n removeListeners(el);\n }\n }\n },\n unbind: function unbind(el) {\n removeListeners(el);\n }\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction getDefault(key) {\n var value = directive.options.popover[key];\n\n if (typeof value === 'undefined') {\n return directive.options[key];\n }\n\n return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n Element = window.Element;\n}\n\nvar script = {\n name: 'VPopover',\n components: {\n ResizeObserver: ResizeObserver\n },\n props: {\n open: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n default: function _default() {\n return getDefault('defaultPlacement');\n }\n },\n delay: {\n type: [String, Number, Object],\n default: function _default() {\n return getDefault('defaultDelay');\n }\n },\n offset: {\n type: [String, Number],\n default: function _default() {\n return getDefault('defaultOffset');\n }\n },\n trigger: {\n type: String,\n default: function _default() {\n return getDefault('defaultTrigger');\n }\n },\n container: {\n type: [String, Object, Element, Boolean],\n default: function _default() {\n return getDefault('defaultContainer');\n }\n },\n boundariesElement: {\n type: [String, Element],\n default: function _default() {\n return getDefault('defaultBoundariesElement');\n }\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return getDefault('defaultPopperOptions');\n }\n },\n popoverClass: {\n type: [String, Array],\n default: function _default() {\n return getDefault('defaultClass');\n }\n },\n popoverBaseClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultBaseClass;\n }\n },\n popoverInnerClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultInnerClass;\n }\n },\n popoverWrapperClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultWrapperClass;\n }\n },\n popoverArrowClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultArrowClass;\n }\n },\n autoHide: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultAutoHide;\n }\n },\n handleResize: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultHandleResize;\n }\n },\n openGroup: {\n type: String,\n default: null\n },\n openClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultOpenClass;\n }\n },\n ariaId: {\n default: null\n }\n },\n data: function data() {\n return {\n isOpen: false,\n id: Math.random().toString(36).substr(2, 10)\n };\n },\n computed: {\n cssClass: function cssClass() {\n return _defineProperty({}, this.openClass, this.isOpen);\n },\n popoverId: function popoverId() {\n return \"popover_\".concat(this.ariaId != null ? this.ariaId : this.id);\n }\n },\n watch: {\n open: function open(val) {\n if (val) {\n this.show();\n } else {\n this.hide();\n }\n },\n disabled: function disabled(val, oldVal) {\n if (val !== oldVal) {\n if (val) {\n this.hide();\n } else if (this.open) {\n this.show();\n }\n }\n },\n container: function container(val) {\n if (this.isOpen && this.popperInstance) {\n var popoverNode = this.$refs.popover;\n var reference = this.$refs.trigger;\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.popperInstance.scheduleUpdate();\n }\n },\n trigger: function trigger(val) {\n this.$_removeEventListeners();\n this.$_addEventListeners();\n },\n placement: function placement(val) {\n var _this = this;\n\n this.$_updatePopper(function () {\n _this.popperInstance.options.placement = val;\n });\n },\n offset: '$_restartPopper',\n boundariesElement: '$_restartPopper',\n popperOptions: {\n handler: '$_restartPopper',\n deep: true\n }\n },\n created: function created() {\n this.$_isDisposed = false;\n this.$_mounted = false;\n this.$_events = [];\n this.$_preventOpen = false;\n },\n mounted: function mounted() {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n this.$_init();\n\n if (this.open) {\n this.show();\n }\n },\n deactivated: function deactivated() {\n this.hide();\n },\n beforeDestroy: function beforeDestroy() {\n this.dispose();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref2.event;\n _ref2.skipDelay;\n var _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force;\n\n if (force || !this.disabled) {\n this.$_scheduleShow(event);\n this.$emit('show');\n }\n\n this.$emit('update:open', true);\n this.$_beingShowed = true;\n requestAnimationFrame(function () {\n _this2.$_beingShowed = false;\n });\n },\n hide: function hide() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref3.event;\n _ref3.skipDelay;\n\n this.$_scheduleHide(event);\n this.$emit('hide');\n this.$emit('update:open', false);\n },\n dispose: function dispose() {\n this.$_isDisposed = true;\n this.$_removeEventListeners();\n this.hide({\n skipDelay: true\n });\n\n if (this.popperInstance) {\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n }\n }\n\n this.$_mounted = false;\n this.popperInstance = null;\n this.isOpen = false;\n this.$emit('dispose');\n },\n $_init: function $_init() {\n if (this.trigger.indexOf('manual') === -1) {\n this.$_addEventListeners();\n }\n },\n $_show: function $_show() {\n var _this3 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n clearTimeout(this.$_disposeTimer); // Already open\n\n if (this.isOpen) {\n return;\n } // Popper is already initialized\n\n\n if (this.popperInstance) {\n this.isOpen = true;\n this.popperInstance.enableEventListeners();\n this.popperInstance.scheduleUpdate();\n }\n\n if (!this.$_mounted) {\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.$_mounted = true;\n this.isOpen = false;\n\n if (this.popperInstance) {\n requestAnimationFrame(function () {\n if (!_this3.hidden) {\n _this3.isOpen = true;\n }\n });\n }\n }\n\n if (!this.popperInstance) {\n var popperOptions = _objectSpread(_objectSpread({}, this.popperOptions), {}, {\n placement: this.placement\n });\n\n popperOptions.modifiers = _objectSpread(_objectSpread({}, popperOptions.modifiers), {}, {\n arrow: _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.arrow), {}, {\n element: this.$refs.arrow\n })\n });\n\n if (this.offset) {\n var offset = this.$_getOffset();\n popperOptions.modifiers.offset = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.offset), {}, {\n offset: offset\n });\n }\n\n if (this.boundariesElement) {\n popperOptions.modifiers.preventOverflow = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow), {}, {\n boundariesElement: this.boundariesElement\n });\n }\n\n this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed && _this3.popperInstance) {\n _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed) {\n _this3.isOpen = true;\n } else {\n _this3.dispose();\n }\n });\n } else {\n _this3.dispose();\n }\n });\n }\n\n var openGroup = this.openGroup;\n\n if (openGroup) {\n var popover;\n\n for (var i = 0; i < openPopovers.length; i++) {\n popover = openPopovers[i];\n\n if (popover.openGroup !== openGroup) {\n popover.hide();\n popover.$emit('close-group');\n }\n }\n }\n\n openPopovers.push(this);\n this.$emit('apply-show');\n },\n $_hide: function $_hide() {\n var _this4 = this;\n\n // Already hidden\n if (!this.isOpen) {\n return;\n }\n\n var index = openPopovers.indexOf(this);\n\n if (index !== -1) {\n openPopovers.splice(index, 1);\n }\n\n this.isOpen = false;\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this.$_disposeTimer);\n var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this.$_disposeTimer = setTimeout(function () {\n var popoverNode = _this4.$refs.popover;\n\n if (popoverNode) {\n // Don't remove popper instance, just the HTML element\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n _this4.$_mounted = false;\n }\n }, disposeTime);\n }\n\n this.$emit('apply-hide');\n },\n $_findContainer: function $_findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n },\n $_getOffset: function $_getOffset() {\n var typeofOffset = _typeof(this.offset);\n\n var offset = this.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n return offset;\n },\n $_addEventListeners: function $_addEventListeners() {\n var _this5 = this;\n\n var reference = this.$refs.trigger;\n var directEvents = [];\n var oppositeEvents = [];\n var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(event) {\n if (_this5.isOpen) {\n return;\n }\n\n event.usedByTooltip = true;\n !_this5.$_preventOpen && _this5.show({\n event: event\n });\n _this5.hidden = false;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(event) {\n if (event.usedByTooltip) {\n return;\n }\n\n _this5.hide({\n event: event\n });\n\n _this5.hidden = true;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n },\n $_scheduleShow: function $_scheduleShow() {\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_show();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n }\n },\n $_scheduleHide: function $_scheduleHide() {\n var _this6 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_hide();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n this.$_scheduleTimer = setTimeout(function () {\n if (!_this6.isOpen) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (event && event.type === 'mouseleave') {\n var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this6.$_hide();\n }, computedDelay);\n }\n },\n $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n var _this7 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n var callback = function callback(event2) {\n var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this7.hide({\n event: event2\n });\n }\n };\n\n if (popoverNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n popoverNode.addEventListener(event.type, callback);\n return true;\n }\n\n return false;\n },\n $_removeEventListeners: function $_removeEventListeners() {\n var reference = this.$refs.trigger;\n this.$_events.forEach(function (_ref4) {\n var func = _ref4.func,\n event = _ref4.event;\n reference.removeEventListener(event, func);\n });\n this.$_events = [];\n },\n $_updatePopper: function $_updatePopper(cb) {\n if (this.popperInstance) {\n cb();\n if (this.isOpen) this.popperInstance.scheduleUpdate();\n }\n },\n $_restartPopper: function $_restartPopper() {\n if (this.popperInstance) {\n var isOpen = this.isOpen;\n this.dispose();\n this.$_isDisposed = false;\n this.$_init();\n\n if (isOpen) {\n this.show({\n skipDelay: true,\n force: true\n });\n }\n }\n },\n $_handleGlobalClose: function $_handleGlobalClose(event) {\n var _this8 = this;\n\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.$_beingShowed) return;\n this.hide({\n event: event\n });\n\n if (event.closePopover) {\n this.$emit('close-directive');\n } else {\n this.$emit('auto-hide');\n }\n\n if (touch) {\n this.$_preventOpen = true;\n setTimeout(function () {\n _this8.$_preventOpen = false;\n }, 300);\n }\n },\n $_handleResize: function $_handleResize() {\n if (this.isOpen && this.popperInstance) {\n this.popperInstance.scheduleUpdate();\n this.$emit('resize');\n }\n }\n }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (isIOS) {\n document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n } else {\n window.addEventListener('click', handleGlobalClick, true);\n }\n}\n\nfunction handleGlobalClick(event) {\n handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _loop = function _loop(i) {\n var popover = openPopovers[i];\n\n if (popover.$refs.popover) {\n var contains = popover.$refs.popover.contains(event.target);\n requestAnimationFrame(function () {\n if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n popover.$_handleGlobalClose(event, touch);\n }\n });\n }\n };\n\n // Delay so that close directive has time to set values\n for (var i = 0; i < openPopovers.length; i++) {\n _loop(i);\n }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"v-popover\",\n class: _vm.cssClass\n }, [_c(\"div\", {\n ref: \"trigger\",\n staticClass: \"trigger\",\n staticStyle: {\n display: \"inline-block\"\n },\n attrs: {\n \"aria-describedby\": _vm.isOpen ? _vm.popoverId : undefined,\n tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n ref: \"popover\",\n class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n style: {\n visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n },\n attrs: {\n id: _vm.popoverId,\n \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n tabindex: _vm.autoHide ? 0 : undefined\n },\n on: {\n keyup: function keyup($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n return null;\n }\n\n _vm.autoHide && _vm.hide();\n }\n }\n }, [_c(\"div\", {\n class: _vm.popoverWrapperClass\n }, [_c(\"div\", {\n ref: \"inner\",\n class: _vm.popoverInnerClass,\n staticStyle: {\n position: \"relative\"\n }\n }, [_c(\"div\", [_vm._t(\"popover\", null, {\n isOpen: _vm.isOpen\n })], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n on: {\n notify: _vm.$_handleResize\n }\n }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n ref: \"arrow\",\n class: _vm.popoverArrowClass\n })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css_248z);\n\nfunction install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (install.installed) return;\n install.installed = true;\n var finalOptions = {};\n merge(finalOptions, defaultOptions, options);\n plugin.options = finalOptions;\n directive.options = finalOptions;\n Vue.directive('tooltip', directive);\n Vue.directive('close-popover', vclosepopover);\n Vue.component('VPopover', __vue_component__);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = __vue_component__;\nvar plugin = {\n install: install,\n\n get enabled() {\n return state.enabled;\n },\n\n set enabled(value) {\n state.enabled = value;\n }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getRequestToken\", {\n enumerable: true,\n get: function get() {\n return _requesttoken.getRequestToken;\n }\n});\nObject.defineProperty(exports, \"onRequestTokenUpdate\", {\n enumerable: true,\n get: function get() {\n return _requesttoken.onRequestTokenUpdate;\n }\n});\nObject.defineProperty(exports, \"getCurrentUser\", {\n enumerable: true,\n get: function get() {\n return _user.getCurrentUser;\n }\n});\n\nvar _requesttoken = require(\"./requesttoken\");\n\nvar _user = require(\"./user\");\n//# sourceMappingURL=index.js.map","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar fails = require('../internals/fails');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = HAS_SPECIES_SUPPORT && !fails(function () {\n [].filter.call({ length: -1, 0: 1 }, function (it) { throw it; });\n});\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: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\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 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 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 store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\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 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.6.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = false;\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","module.exports = {};\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 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 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","// 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 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","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 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 global = require('../internals/global');\nvar userAgent = require('../internals/user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar fails = require('../internals/fails');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = HAS_SPECIES_SUPPORT && !fails(function () {\n [].map.call({ length: -1, 0: 1 }, function (it) { throw it; });\n});\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: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\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 getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","\"use strict\";\n\nrequire(\"core-js/modules/es.array.concat\");\n\nrequire(\"core-js/modules/es.array.filter\");\n\nrequire(\"core-js/modules/es.array.map\");\n\nrequire(\"core-js/modules/es.object.keys\");\n\nrequire(\"core-js/modules/es.string.starts-with\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ScopedStorage =\n/*#__PURE__*/\nfunction () {\n function ScopedStorage(scope, wrapped, persistent) {\n _classCallCheck(this, ScopedStorage);\n\n _defineProperty(this, \"scope\", void 0);\n\n _defineProperty(this, \"wrapped\", void 0);\n\n this.scope = \"\".concat(persistent ? ScopedStorage.GLOBAL_SCOPE_PERSISTENT : ScopedStorage.GLOBAL_SCOPE_VOLATILE, \"_\").concat(btoa(scope), \"_\");\n this.wrapped = wrapped;\n }\n\n _createClass(ScopedStorage, [{\n key: \"scopeKey\",\n value: function scopeKey(key) {\n return \"\".concat(this.scope).concat(key);\n }\n }, {\n key: \"setItem\",\n value: function setItem(key, value) {\n this.wrapped.setItem(this.scopeKey(key), value);\n }\n }, {\n key: \"getItem\",\n value: function getItem(key) {\n return this.wrapped.getItem(this.scopeKey(key));\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(key) {\n this.wrapped.removeItem(this.scopeKey(key));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var _this = this;\n\n Object.keys(this.wrapped).filter(function (key) {\n return key.startsWith(_this.scope);\n }).map(this.wrapped.removeItem.bind(this.wrapped));\n }\n }]);\n\n return ScopedStorage;\n}();\n\nexports.default = ScopedStorage;\n\n_defineProperty(ScopedStorage, \"GLOBAL_SCOPE_VOLATILE\", 'nextcloud_vol');\n\n_defineProperty(ScopedStorage, \"GLOBAL_SCOPE_PERSISTENT\", 'nextcloud_per');\n//# sourceMappingURL=scopedstorage.js.map","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.es/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","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\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 TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (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 replace.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","'use strict';\n\nvar get = require('lodash.get');\nvar plurals = require('./plurals');\n\nmodule.exports = Gettext;\n\n/**\n * Creates and returns a new Gettext instance.\n *\n * @constructor\n * @param {Object} [options] A set of options\n * @param {String} options.sourceLocale The locale that the source code and its\n * texts are written in. Translations for\n * this locale is not necessary.\n * @param {Boolean} options.debug Whether to output debug info into the\n * console.\n * @return {Object} A Gettext instance\n */\nfunction Gettext(options) {\n options = options || {};\n\n this.catalogs = {};\n this.locale = '';\n this.domain = 'messages';\n\n this.listeners = [];\n\n // Set source locale\n this.sourceLocale = '';\n if (options.sourceLocale) {\n if (typeof options.sourceLocale === 'string') {\n this.sourceLocale = options.sourceLocale;\n }\n else {\n this.warn('The `sourceLocale` option should be a string');\n }\n }\n\n // Set debug flag\n this.debug = 'debug' in options && options.debug === true;\n}\n\n/**\n * Adds an event listener.\n *\n * @param {String} eventName An event name\n * @param {Function} callback An event handler function\n */\nGettext.prototype.on = function(eventName, callback) {\n this.listeners.push({\n eventName: eventName,\n callback: callback\n });\n};\n\n/**\n * Removes an event listener.\n *\n * @param {String} eventName An event name\n * @param {Function} callback A previously registered event handler function\n */\nGettext.prototype.off = function(eventName, callback) {\n this.listeners = this.listeners.filter(function(listener) {\n return (\n listener.eventName === eventName &&\n listener.callback === callback\n ) === false;\n });\n};\n\n/**\n * Emits an event to all registered event listener.\n *\n * @private\n * @param {String} eventName An event name\n * @param {any} eventData Data to pass to event listeners\n */\nGettext.prototype.emit = function(eventName, eventData) {\n for (var i = 0; i < this.listeners.length; i++) {\n var listener = this.listeners[i];\n if (listener.eventName === eventName) {\n listener.callback(eventData);\n }\n }\n};\n\n/**\n * Logs a warning to the console if debug mode is enabled.\n *\n * @ignore\n * @param {String} message A warning message\n */\nGettext.prototype.warn = function(message) {\n if (this.debug) {\n console.warn(message);\n }\n\n this.emit('error', new Error(message));\n};\n\n/**\n * Stores a set of translations in the set of gettext\n * catalogs.\n *\n * @example\n * gt.addTranslations('sv-SE', 'messages', translationsObject)\n *\n * @param {String} locale A locale string\n * @param {String} domain A domain name\n * @param {Object} translations An object of gettext-parser JSON shape\n */\nGettext.prototype.addTranslations = function(locale, domain, translations) {\n if (!this.catalogs[locale]) {\n this.catalogs[locale] = {};\n }\n\n this.catalogs[locale][domain] = translations;\n};\n\n/**\n * Sets the locale to get translated messages for.\n *\n * @example\n * gt.setLocale('sv-SE')\n *\n * @param {String} locale A locale\n */\nGettext.prototype.setLocale = function(locale) {\n if (typeof locale !== 'string') {\n this.warn(\n 'You called setLocale() with an argument of type ' + (typeof locale) + '. ' +\n 'The locale must be a string.'\n );\n return;\n }\n\n if (locale.trim() === '') {\n this.warn('You called setLocale() with an empty value, which makes little sense.');\n }\n\n if (locale !== this.sourceLocale && !this.catalogs[locale]) {\n this.warn('You called setLocale() with \"' + locale + '\", but no translations for that locale has been added.');\n }\n\n this.locale = locale;\n};\n\n/**\n * Sets the default gettext domain.\n *\n * @example\n * gt.setTextDomain('domainname')\n *\n * @param {String} domain A gettext domain name\n */\nGettext.prototype.setTextDomain = function(domain) {\n if (typeof domain !== 'string') {\n this.warn(\n 'You called setTextDomain() with an argument of type ' + (typeof domain) + '. ' +\n 'The domain must be a string.'\n );\n return;\n }\n\n if (domain.trim() === '') {\n this.warn('You called setTextDomain() with an empty `domain` value.');\n }\n\n this.domain = domain;\n};\n\n/**\n * Translates a string using the default textdomain\n *\n * @example\n * gt.gettext('Some text')\n *\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.gettext = function(msgid) {\n return this.dnpgettext(this.domain, '', msgid);\n};\n\n/**\n * Translates a string using a specific domain\n *\n * @example\n * gt.dgettext('domainname', 'Some text')\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dgettext = function(domain, msgid) {\n return this.dnpgettext(domain, '', msgid);\n};\n\n/**\n * Translates a plural string using the default textdomain\n *\n * @example\n * gt.ngettext('One thing', 'Many things', numberOfThings)\n *\n * @param {String} msgid String to be translated when count is not plural\n * @param {String} msgidPlural String to be translated when count is plural\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.ngettext = function(msgid, msgidPlural, count) {\n return this.dnpgettext(this.domain, '', msgid, msgidPlural, count);\n};\n\n/**\n * Translates a plural string using a specific textdomain\n *\n * @example\n * gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings)\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgid String to be translated when count is not plural\n * @param {String} msgidPlural String to be translated when count is plural\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dngettext = function(domain, msgid, msgidPlural, count) {\n return this.dnpgettext(domain, '', msgid, msgidPlural, count);\n};\n\n/**\n * Translates a string from a specific context using the default textdomain\n *\n * @example\n * gt.pgettext('sports', 'Back')\n *\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.pgettext = function(msgctxt, msgid) {\n return this.dnpgettext(this.domain, msgctxt, msgid);\n};\n\n/**\n * Translates a string from a specific context using s specific textdomain\n *\n * @example\n * gt.dpgettext('domainname', 'sports', 'Back')\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dpgettext = function(domain, msgctxt, msgid) {\n return this.dnpgettext(domain, msgctxt, msgid);\n};\n\n/**\n * Translates a plural string from a specific context using the default textdomain\n *\n * @example\n * gt.npgettext('sports', 'Back', '%d backs', numberOfBacks)\n *\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated when count is not plural\n * @param {String} msgidPlural String to be translated when count is plural\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.npgettext = function(msgctxt, msgid, msgidPlural, count) {\n return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count);\n};\n\n/**\n * Translates a plural string from a specifi context using a specific textdomain\n *\n * @example\n * gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks)\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @param {String} msgidPlural If no translation was found, return this on count!=1\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dnpgettext = function(domain, msgctxt, msgid, msgidPlural, count) {\n var defaultTranslation = msgid;\n var translation;\n var index;\n\n msgctxt = msgctxt || '';\n\n if (!isNaN(count) && count !== 1) {\n defaultTranslation = msgidPlural || msgid;\n }\n\n translation = this._getTranslation(domain, msgctxt, msgid);\n\n if (translation) {\n if (typeof count === 'number') {\n var pluralsFunc = plurals[Gettext.getLanguageCode(this.locale)].pluralsFunc;\n index = pluralsFunc(count);\n if (typeof index === 'boolean') {\n index = index ? 1 : 0;\n }\n } else {\n index = 0;\n }\n\n return translation.msgstr[index] || defaultTranslation;\n }\n else if (!this.sourceLocale || this.locale !== this.sourceLocale) {\n this.warn('No translation was found for msgid \"' + msgid + '\" in msgctxt \"' + msgctxt + '\" and domain \"' + domain + '\"');\n }\n\n return defaultTranslation;\n};\n\n/**\n * Retrieves comments object for a translation. The comments object\n * has the shape `{ translator, extracted, reference, flag, previous }`.\n *\n * @example\n * const comment = gt.getComment('domainname', 'sports', 'Backs')\n *\n * @private\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {Object} Comments object or false if not found\n */\nGettext.prototype.getComment = function(domain, msgctxt, msgid) {\n var translation;\n\n translation = this._getTranslation(domain, msgctxt, msgid);\n if (translation) {\n return translation.comments || {};\n }\n\n return {};\n};\n\n/**\n * Retrieves translation object from the domain and context\n *\n * @private\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {Object} Translation object or false if not found\n */\nGettext.prototype._getTranslation = function(domain, msgctxt, msgid) {\n msgctxt = msgctxt || '';\n\n return get(this.catalogs, [this.locale, domain, 'translations', msgctxt, msgid]);\n};\n\n/**\n * Returns the language code part of a locale\n *\n * @example\n * Gettext.getLanguageCode('sv-SE')\n * // -> \"sv\"\n *\n * @private\n * @param {String} locale A case-insensitive locale string\n * @returns {String} A language code\n */\nGettext.getLanguageCode = function(locale) {\n return locale.split(/[\\-_]/)[0].toLowerCase();\n};\n\n/* C-style aliases */\n\n/**\n * C-style alias for [setTextDomain](#gettextsettextdomaindomain)\n *\n * @see Gettext#setTextDomain\n */\nGettext.prototype.textdomain = function(domain) {\n if (this.debug) {\n console.warn('textdomain(domain) was used to set locales in node-gettext v1. ' +\n 'Make sure you are using it for domains, and switch to setLocale(locale) if you are not.\\n\\n ' +\n 'To read more about the migration from node-gettext v1 to v2, ' +\n 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x\\n\\n' +\n 'This warning will be removed in the final 2.0.0');\n }\n\n this.setTextDomain(domain);\n};\n\n/**\n * C-style alias for [setLocale](#gettextsetlocalelocale)\n *\n * @see Gettext#setLocale\n */\nGettext.prototype.setlocale = function(locale) {\n this.setLocale(locale);\n};\n\n/* Deprecated functions */\n\n/**\n * This function will be removed in the final 2.0.0 release.\n *\n * @deprecated\n */\nGettext.prototype.addTextdomain = function() {\n console.error('addTextdomain() is deprecated.\\n\\n' +\n '* To add translations, use addTranslations()\\n' +\n '* To set the default domain, use setTextDomain() (or its alias textdomain())\\n' +\n '\\n' +\n 'To read more about the migration from node-gettext v1 to v2, ' +\n 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x');\n};\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","'use strict';\n\nmodule.exports = {\n ach: {\n name: 'Acholi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n af: {\n name: 'Afrikaans',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ak: {\n name: 'Akan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n am: {\n name: 'Amharic',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n an: {\n name: 'Aragonese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ar: {\n name: 'Arabic',\n examples: [{\n plural: 0,\n sample: 0\n }, {\n plural: 1,\n sample: 1\n }, {\n plural: 2,\n sample: 2\n }, {\n plural: 3,\n sample: 3\n }, {\n plural: 4,\n sample: 11\n }, {\n plural: 5,\n sample: 100\n }],\n nplurals: 6,\n pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)',\n pluralsFunc: function(n) {\n return (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n }\n },\n arn: {\n name: 'Mapudungun',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n ast: {\n name: 'Asturian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ay: {\n name: 'Aymará',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n az: {\n name: 'Azerbaijani',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n be: {\n name: 'Belarusian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n bg: {\n name: 'Bulgarian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n bn: {\n name: 'Bengali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n bo: {\n name: 'Tibetan',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n br: {\n name: 'Breton',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n brx: {\n name: 'Bodo',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n bs: {\n name: 'Bosnian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n ca: {\n name: 'Catalan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n cgg: {\n name: 'Chiga',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n cs: {\n name: 'Czech',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2);\n }\n },\n csb: {\n name: 'Kashubian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n cy: {\n name: 'Welsh',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 8\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3);\n }\n },\n da: {\n name: 'Danish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n de: {\n name: 'German',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n doi: {\n name: 'Dogri',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n dz: {\n name: 'Dzongkha',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n el: {\n name: 'Greek',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n en: {\n name: 'English',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n eo: {\n name: 'Esperanto',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n es: {\n name: 'Spanish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n et: {\n name: 'Estonian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n eu: {\n name: 'Basque',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n fa: {\n name: 'Persian',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n ff: {\n name: 'Fulah',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n fi: {\n name: 'Finnish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n fil: {\n name: 'Filipino',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n fo: {\n name: 'Faroese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n fr: {\n name: 'French',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n fur: {\n name: 'Friulian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n fy: {\n name: 'Frisian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ga: {\n name: 'Irish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 7\n }, {\n plural: 4,\n sample: 11\n }],\n nplurals: 5,\n pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n }\n },\n gd: {\n name: 'Scottish Gaelic',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 20\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)',\n pluralsFunc: function(n) {\n return ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3);\n }\n },\n gl: {\n name: 'Galician',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n gu: {\n name: 'Gujarati',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n gun: {\n name: 'Gun',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n ha: {\n name: 'Hausa',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n he: {\n name: 'Hebrew',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n hi: {\n name: 'Hindi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n hne: {\n name: 'Chhattisgarhi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n hr: {\n name: 'Croatian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n hu: {\n name: 'Hungarian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n hy: {\n name: 'Armenian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n id: {\n name: 'Indonesian',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n is: {\n name: 'Icelandic',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)',\n pluralsFunc: function(n) {\n return (n % 10 !== 1 || n % 100 === 11);\n }\n },\n it: {\n name: 'Italian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ja: {\n name: 'Japanese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n jbo: {\n name: 'Lojban',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n jv: {\n name: 'Javanese',\n examples: [{\n plural: 0,\n sample: 0\n }, {\n plural: 1,\n sample: 1\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 0)',\n pluralsFunc: function(n) {\n return (n !== 0);\n }\n },\n ka: {\n name: 'Georgian',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n kk: {\n name: 'Kazakh',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n km: {\n name: 'Khmer',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n kn: {\n name: 'Kannada',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ko: {\n name: 'Korean',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n ku: {\n name: 'Kurdish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n kw: {\n name: 'Cornish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 4\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3);\n }\n },\n ky: {\n name: 'Kyrgyz',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n lb: {\n name: 'Letzeburgesch',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ln: {\n name: 'Lingala',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n lo: {\n name: 'Lao',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n lt: {\n name: 'Lithuanian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 10\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n lv: {\n name: 'Latvian',\n examples: [{\n plural: 2,\n sample: 0\n }, {\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2);\n }\n },\n mai: {\n name: 'Maithili',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n mfe: {\n name: 'Mauritian Creole',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n mg: {\n name: 'Malagasy',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n mi: {\n name: 'Maori',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n mk: {\n name: 'Macedonian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)',\n pluralsFunc: function(n) {\n return (n === 1 || n % 10 === 1 ? 0 : 1);\n }\n },\n ml: {\n name: 'Malayalam',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n mn: {\n name: 'Mongolian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n mni: {\n name: 'Manipuri',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n mnk: {\n name: 'Mandinka',\n examples: [{\n plural: 0,\n sample: 0\n }, {\n plural: 1,\n sample: 1\n }, {\n plural: 2,\n sample: 2\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n === 0 ? 0 : n === 1 ? 1 : 2);\n }\n },\n mr: {\n name: 'Marathi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ms: {\n name: 'Malay',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n mt: {\n name: 'Maltese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 11\n }, {\n plural: 3,\n sample: 20\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : n === 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3);\n }\n },\n my: {\n name: 'Burmese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n nah: {\n name: 'Nahuatl',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n nap: {\n name: 'Neapolitan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n nb: {\n name: 'Norwegian Bokmal',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ne: {\n name: 'Nepali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n nl: {\n name: 'Dutch',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n nn: {\n name: 'Norwegian Nynorsk',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n no: {\n name: 'Norwegian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n nso: {\n name: 'Northern Sotho',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n oc: {\n name: 'Occitan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n or: {\n name: 'Oriya',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n pa: {\n name: 'Punjabi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n pap: {\n name: 'Papiamento',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n pl: {\n name: 'Polish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n pms: {\n name: 'Piemontese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ps: {\n name: 'Pashto',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n pt: {\n name: 'Portuguese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n rm: {\n name: 'Romansh',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ro: {\n name: 'Romanian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 20\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2);\n }\n },\n ru: {\n name: 'Russian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n rw: {\n name: 'Kinyarwanda',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sah: {\n name: 'Yakut',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n sat: {\n name: 'Santali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sco: {\n name: 'Scots',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sd: {\n name: 'Sindhi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n se: {\n name: 'Northern Sami',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n si: {\n name: 'Sinhala',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sk: {\n name: 'Slovak',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2);\n }\n },\n sl: {\n name: 'Slovenian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 5\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)',\n pluralsFunc: function(n) {\n return (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3);\n }\n },\n so: {\n name: 'Somali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n son: {\n name: 'Songhay',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sq: {\n name: 'Albanian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sr: {\n name: 'Serbian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n su: {\n name: 'Sundanese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n sv: {\n name: 'Swedish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n sw: {\n name: 'Swahili',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n ta: {\n name: 'Tamil',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n te: {\n name: 'Telugu',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n tg: {\n name: 'Tajik',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n th: {\n name: 'Thai',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n ti: {\n name: 'Tigrinya',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n tk: {\n name: 'Turkmen',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n tr: {\n name: 'Turkish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n tt: {\n name: 'Tatar',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n ug: {\n name: 'Uyghur',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n uk: {\n name: 'Ukrainian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function(n) {\n return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n }\n },\n ur: {\n name: 'Urdu',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n uz: {\n name: 'Uzbek',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n vi: {\n name: 'Vietnamese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n wa: {\n name: 'Walloon',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function(n) {\n return (n > 1);\n }\n },\n wo: {\n name: 'Wolof',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n },\n yo: {\n name: 'Yoruba',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function(n) {\n return (n !== 1);\n }\n },\n zh: {\n name: 'Chinese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function() {\n return 0;\n }\n }\n};\n","\"use strict\";\n\nrequire(\"core-js/modules/es.regexp.exec\");\n\nrequire(\"core-js/modules/es.string.replace\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLocale = getLocale;\nexports.getCanonicalLocale = getCanonicalLocale;\nexports.getLanguage = getLanguage;\nexports.translate = translate;\nexports.translatePlural = translatePlural;\nexports.getFirstDay = getFirstDay;\nexports.getDayNames = getDayNames;\nexports.getDayNamesShort = getDayNamesShort;\nexports.getDayNamesMin = getDayNamesMin;\nexports.getMonthNames = getMonthNames;\nexports.getMonthNamesShort = getMonthNamesShort;\n\n/// <reference types=\"@nextcloud/typings\" />\n\n/**\n * Returns the user's locale\n */\nfunction getLocale() {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return 'en';\n }\n\n return OC.getLocale();\n}\n\nfunction getCanonicalLocale() {\n return getLocale().replace(/_/g, '-');\n}\n/**\n * Returns the user's language\n */\n\n\nfunction getLanguage() {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return 'en';\n }\n\n return OC.getLanguage();\n}\n\n/**\n * Translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param {object} vars map of placeholder key to value\n * @param {number} number to replace %n with\n * @param {object} [options] options object\n * @return {string}\n */\nfunction translate(app, text, vars, count, options) {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return text;\n }\n\n return OC.L10N.translate(app, text, vars, count, options);\n}\n/**\n * Translate a plural string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} textSingular the string to translate for exactly one object\n * @param {string} textPlural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param {Object} vars of placeholder key to value\n * @param {object} options options object\n * @return {string}\n */\n\n\nfunction translatePlural(app, textSingular, textPlural, count, vars, options) {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return textSingular;\n }\n\n return OC.L10N.translatePlural(app, textSingular, textPlural, count, vars, options);\n}\n/**\n * Get the first day of the week\n *\n * @return {number}\n */\n\n\nfunction getFirstDay() {\n if (typeof window.firstDay === 'undefined') {\n console.warn('No firstDay found');\n return 1;\n }\n\n return window.firstDay;\n}\n/**\n * Get a list of day names (full names)\n *\n * @return {string[]}\n */\n\n\nfunction getDayNames() {\n if (typeof window.dayNames === 'undefined') {\n console.warn('No dayNames found');\n return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n }\n\n return window.dayNames;\n}\n/**\n * Get a list of day names (short names)\n *\n * @return {string[]}\n */\n\n\nfunction getDayNamesShort() {\n if (typeof window.dayNamesShort === 'undefined') {\n console.warn('No dayNamesShort found');\n return ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'];\n }\n\n return window.dayNamesShort;\n}\n/**\n * Get a list of day names (minified names)\n *\n * @return {string[]}\n */\n\n\nfunction getDayNamesMin() {\n if (typeof window.dayNamesMin === 'undefined') {\n console.warn('No dayNamesMin found');\n return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n }\n\n return window.dayNamesMin;\n}\n/**\n * Get a list of month names (full names)\n *\n * @return {string[]}\n */\n\n\nfunction getMonthNames() {\n if (typeof window.monthNames === 'undefined') {\n console.warn('No monthNames found');\n return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n }\n\n return window.monthNames;\n}\n/**\n * Get a list of month names (short names)\n *\n * @return {string[]}\n */\n\n\nfunction getMonthNamesShort() {\n if (typeof window.monthNamesShort === 'undefined') {\n console.warn('No monthNamesShort found');\n return ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'];\n }\n\n return window.monthNamesShort;\n}\n//# sourceMappingURL=index.js.map","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\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","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = 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 $getOwnPropertyNames(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 : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\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 (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e=e||self)[\"v-click-outside\"]=n()}(this,function(){var e=\"undefined\"!=typeof window,n=\"undefined\"!=typeof navigator,t=e&&(\"ontouchstart\"in window||n&&navigator.msMaxTouchPoints>0)?[\"touchstart\"]:[\"click\"];function i(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)}function r(e,n){var r=function(e){var n=\"function\"==typeof e;if(!n&&\"object\"!=typeof e)throw new Error(\"v-click-outside: Binding value must be a function or an object\");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||t,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe)}}(n.value),d=r.handler,o=r.middleware,a=r.detectIframe;if(r.isActive){if(e[\"__v-click-outside\"]=r.events.map(function(n){return{event:n,srcTarget:document.documentElement,handler:function(n){return function(e){var n=e.el,t=e.event,r=e.handler,d=e.middleware,o=t.path||t.composedPath&&t.composedPath();(o?o.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:d})}({el:e,event:n,handler:d,middleware:o})}}}),a){var c={event:\"blur\",srcTarget:window,handler:function(n){return function(e){var n=e.el,t=e.event,r=e.handler,d=e.middleware;setTimeout(function(){var e=document.activeElement;e&&\"IFRAME\"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:d})},0)}({el:e,event:n,handler:d,middleware:o})}};e[\"__v-click-outside\"]=[].concat(e[\"__v-click-outside\"],[c])}e[\"__v-click-outside\"].forEach(function(n){var t=n.event,i=n.srcTarget,r=n.handler;return setTimeout(function(){e[\"__v-click-outside\"]&&i.addEventListener(t,r,!1)},0)})}}function d(e){(e[\"__v-click-outside\"]||[]).forEach(function(e){return e.srcTarget.removeEventListener(e.event,e.handler,!1)}),delete e[\"__v-click-outside\"]}var o=e?{bind:r,update:function(e,n){var t=n.value,i=n.oldValue;JSON.stringify(t)!==JSON.stringify(i)&&(d(e),r(e,{value:t}))},unbind:d}:{};return{install:function(e){e.directive(\"click-outside\",o)},directive:o}});\n//# sourceMappingURL=v-click-outside.umd.js.map\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = require('./lib/linkify-string').default;\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 HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\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.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\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\";\n\nrequire(\"core-js/modules/es.object.assign.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(require(\"axios\"));\n\nvar _auth = require(\"@nextcloud/auth\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar client = _axios.default.create({\n headers: {\n requesttoken: (0, _auth.getRequestToken)()\n }\n});\n\nvar cancelableClient = Object.assign(client, {\n CancelToken: _axios.default.CancelToken,\n isCancel: _axios.default.isCancel\n});\n(0, _auth.onRequestTokenUpdate)(function (token) {\n return client.defaults.headers.requesttoken = token;\n});\nvar _default = cancelableClient;\nexports.default = _default;\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCapabilities = getCapabilities;\n\nvar _initialState = require(\"@nextcloud/initial-state\");\n\nfunction getCapabilities() {\n try {\n return (0, _initialState.loadState)('core', 'capabilities');\n } catch (error) {\n console.debug('Could not find capabilities initial state fall back to _oc_capabilities');\n\n if (!('_oc_capabilities' in window)) {\n return {};\n }\n\n return window['_oc_capabilities'];\n }\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nrequire(\"core-js/modules/es.array.index-of\");\n\nrequire(\"core-js/modules/es.object.assign\");\n\nrequire(\"core-js/modules/es.object.to-string\");\n\nrequire(\"core-js/modules/es.regexp.exec\");\n\nrequire(\"core-js/modules/es.regexp.to-string\");\n\nrequire(\"core-js/modules/es.string.replace\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getRootUrl = exports.generateFilePath = exports.imagePath = exports.generateUrl = exports.generateOcsUrl = exports.generateRemoteUrl = exports.linkTo = void 0;\n\n/// <reference types=\"@nextcloud/typings\" />\n\n/**\n * Get an absolute url to a file in an app\n *\n * @param {string} app the id of the app the file belongs to\n * @param {string} file the file path relative to the app folder\n * @return {string} Absolute URL to a file\n */\nvar linkTo = function linkTo(app, file) {\n return generateFilePath(app, '', file);\n};\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\n\n\nexports.linkTo = linkTo;\n\nvar linkToRemoteBase = function linkToRemoteBase(service) {\n return getRootUrl() + '/remote.php/' + service;\n};\n/**\n * @brief Creates an absolute url for remote use\n * @param {string} service id\n * @return {string} the url\n */\n\n\nvar generateRemoteUrl = function generateRemoteUrl(service) {\n return window.location.protocol + '//' + window.location.host + linkToRemoteBase(service);\n};\n/**\n * Get the base path for the given OCS API service\n *\n * @param {string} service name\n * @param {int} version OCS API version\n * @return {string} OCS API base path\n */\n\n\nexports.generateRemoteUrl = generateRemoteUrl;\n\nvar generateOcsUrl = function generateOcsUrl(service, version) {\n version = version !== 2 ? 1 : 2;\n return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php/' + service + '/';\n};\n\nexports.generateOcsUrl = generateOcsUrl;\n\n/**\n * Generate the absolute url for the given relative url, which can contain parameters\n *\n * Parameters will be URL encoded automatically\n *\n * @return {string} Absolute URL for the given relative URL\n */\nvar generateUrl = function generateUrl(url, params, options) {\n var allOptions = Object.assign({\n escape: true,\n noRewrite: false\n }, options || {});\n\n var _build = function _build(text, vars) {\n vars = vars || {};\n return text.replace(/{([^{}]*)}/g, function (a, b) {\n var r = vars[b];\n\n if (allOptions.escape) {\n return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a);\n } else {\n return typeof r === 'string' || typeof r === 'number' ? r.toString() : a;\n }\n });\n };\n\n if (url.charAt(0) !== '/') {\n url = '/' + url;\n }\n\n if (OC.config.modRewriteWorking === true && !allOptions.noRewrite) {\n return getRootUrl() + _build(url, params || {});\n }\n\n return getRootUrl() + '/index.php' + _build(url, params || {});\n};\n/**\n * Get the absolute path to an image file\n * if no extension is given for the image, it will automatically decide\n * between .png and .svg based on what the browser supports\n *\n * @param {string} app the app id to which the image belongs\n * @param {string} file the name of the image file\n * @return {string}\n */\n\n\nexports.generateUrl = generateUrl;\n\nvar imagePath = function imagePath(app, file) {\n if (file.indexOf('.') === -1) {\n //if no extension is given, use svg\n return generateFilePath(app, 'img', file + '.svg');\n }\n\n return generateFilePath(app, 'img', file);\n};\n/**\n * Get the absolute url for a file in an app\n *\n * @param {string} app the id of the app\n * @param {string} type the type of the file to link to (e.g. css,img,ajax.template)\n * @param {string} file the filename\n * @return {string} Absolute URL for a file in an app\n */\n\n\nexports.imagePath = imagePath;\n\nvar generateFilePath = function generateFilePath(app, type, file) {\n var isCore = OC.coreApps.indexOf(app) !== -1;\n var link = getRootUrl();\n\n if (file.substring(file.length - 3) === 'php' && !isCore) {\n link += '/index.php/apps/' + app;\n\n if (file !== 'index.php') {\n link += '/';\n\n if (type) {\n link += encodeURI(type + '/');\n }\n\n link += file;\n }\n } else if (file.substring(file.length - 3) !== 'php' && !isCore) {\n link = OC.appswebroots[app];\n\n if (type) {\n link += '/' + type + '/';\n }\n\n if (link.substring(link.length - 1) !== '/') {\n link += '/';\n }\n\n link += file;\n } else {\n if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') {\n link += '/index.php/';\n } else {\n link += '/';\n }\n\n if (!isCore) {\n link += 'apps/';\n }\n\n if (app !== '') {\n app += '/';\n link += app;\n }\n\n if (type) {\n link += type + '/';\n }\n\n link += file;\n }\n\n return link;\n};\n/**\n * Return the web root path where this Nextcloud instance\n * is accessible, with a leading slash.\n * For example \"/nextcloud\".\n *\n * @return {string} web root path\n */\n\n\nexports.generateFilePath = generateFilePath;\n\nvar getRootUrl = function getRootUrl() {\n return OC.webroot;\n};\n\nexports.getRootUrl = getRootUrl;\n//# sourceMappingURL=index.js.map","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_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 $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\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.es/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.es/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 // ESNext\n 'fromString,range'\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","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\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 stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\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 UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || 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.es/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 var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\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.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\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 stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\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.es/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.es/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 (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, 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 = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), 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}, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar $startsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '<!-') {\n state = STATE_COMMENT;\n }\n\n tag_buffer += char;\n break;\n\n case ' ':\n case '\\n':\n if (tag_buffer === '<') {\n state = STATE_PLAINTEXT;\n output += '< ';\n tag_buffer = '';\n\n break;\n }\n\n tag_buffer += char;\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n\n else if (state === STATE_COMMENT) {\n switch (char) {\n case '>':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","\"use strict\";\n\nrequire(\"core-js/modules/es.array.filter\");\n\nrequire(\"core-js/modules/es.array.map\");\n\nrequire(\"core-js/modules/es.object.keys\");\n\nrequire(\"core-js/modules/es.string.starts-with\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBuilder = getBuilder;\nexports.clearAll = clearAll;\nexports.clearNonPersistent = clearNonPersistent;\n\nvar _storagebuilder = _interopRequireDefault(require(\"./storagebuilder\"));\n\nvar _scopedstorage = _interopRequireDefault(require(\"./scopedstorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBuilder(appId) {\n return new _storagebuilder.default(appId);\n}\n\nfunction clearStorage(storage, pred) {\n Object.keys(storage).filter(function (k) {\n return pred ? pred(k) : true;\n }).map(storage.removeItem.bind(storage));\n}\n\nfunction clearAll() {\n var storages = [window.sessionStorage, window.localStorage];\n storages.map(function (s) {\n return clearStorage(s);\n });\n}\n\nfunction clearNonPersistent() {\n var storages = [window.sessionStorage, window.localStorage];\n storages.map(function (s) {\n return clearStorage(s, function (k) {\n return !k.startsWith(_scopedstorage.default.GLOBAL_SCOPE_PERSISTENT);\n });\n });\n}\n//# sourceMappingURL=index.js.map","'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.es/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.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n codePointAt: function codePointAt(pos) {\n return codeAt(this, pos);\n }\n});\n","var $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n elements.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)\n );\n } return elements.join('');\n }\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.es/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.es/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","'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.es/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.es/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","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueMultiselect=e():t.VueMultiselect=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=60)}([function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)(\"wks\"),r=n(30),o=n(0).Symbol,s=\"function\"==typeof o;(t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)(\"Symbol.\"+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var i=n(0),r=n(10),o=n(8),s=n(6),u=n(11),a=function(t,e,n){var l,c,f,p,h=t&a.F,d=t&a.G,v=t&a.S,g=t&a.P,y=t&a.B,m=d?i:v?i[e]||(i[e]={}):(i[e]||{}).prototype,b=d?r:r[e]||(r[e]={}),_=b.prototype||(b.prototype={});d&&(n=e);for(l in n)c=!h&&m&&void 0!==m[l],f=(c?m:n)[l],p=y&&c?u(f,i):g&&\"function\"==typeof f?u(Function.call,f):f,m&&s(m,l,f,t&a.U),b[l]!=f&&o(b,l,p),g&&_[l]!=f&&(_[l]=f)};i.core=r,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e,n){t.exports=!n(7)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var i=n(0),r=n(8),o=n(12),s=n(30)(\"src\"),u=Function.toString,a=(\"\"+u).split(\"toString\");n(10).inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var l=\"function\"==typeof n;l&&(o(n,\"name\")||r(n,\"name\",e)),t[e]!==n&&(l&&(o(n,s)||r(n,s,t[e]?\"\"+t[e]:a.join(String(e)))),t===i?t[e]=n:u?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[s]||u.call(this)})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),r=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:\"2.5.7\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),r=n(41),o=n(29),s=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,n){\"use strict\";var i=n(7);t.exports=function(t,e){return!!t&&i(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var i=n(23),r=n(16);t.exports=function(t){return i(r(t))}},function(t,e,n){var i=n(53),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),r=n(23),o=n(28),s=n(19),u=n(64);t.exports=function(t,e){var n=1==t,a=2==t,l=3==t,c=4==t,f=6==t,p=5==t||f,h=e||u;return function(e,u,d){for(var v,g,y=o(e),m=r(y),b=i(u,d,3),_=s(m.length),x=0,w=n?h(e,_):a?h(e,0):void 0;_>x;x++)if((p||x in m)&&(v=m[x],g=b(v,x,y),t))if(n)w[x]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return x;case 2:w.push(v)}else if(c)return!1;return f?-1:l||c?c:w}}},function(t,e,n){var i=n(5),r=n(0).document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,n){var i=n(9);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==i(t)?t.split(\"\"):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,r=n(12),o=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)(\"keys\"),r=n(30);t.exports=function(t){return i[t]||(i[t]=r(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&\"function\"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if(\"function\"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&\"function\"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+i).toString(36))}},function(t,e,n){\"use strict\";var i=n(0),r=n(12),o=n(9),s=n(67),u=n(29),a=n(7),l=n(77).f,c=n(45).f,f=n(13).f,p=n(51).trim,h=i.Number,d=h,v=h.prototype,g=\"Number\"==o(n(44)(v)),y=\"trim\"in String.prototype,m=function(t){var e=u(t,!1);if(\"string\"==typeof e&&e.length>2){e=y?e.trim():p(e,3);var n,i,r,o=e.charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+e}for(var s,a=e.slice(2),l=0,c=a.length;l<c;l++)if((s=a.charCodeAt(l))<48||s>r)return NaN;return parseInt(a,i)}}return+e};if(!h(\" 0o1\")||!h(\"0b1\")||h(\"+0x1\")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(g?a(function(){v.valueOf.call(n)}):\"Number\"!=o(n))?s(new d(m(e)),n,h):m(e)};for(var b,_=n(4)?l(d):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),x=0;_.length>x;x++)r(d,b=_[x])&&!r(h,b)&&f(h,b,c(d,b));h.prototype=v,v.constructor=h,n(6)(i,\"Number\",h)}},function(t,e,n){\"use strict\";function i(t){return 0!==t&&(!(!Array.isArray(t)||0!==t.length)||!t)}function r(t){return function(){return!t.apply(void 0,arguments)}}function o(t,e){return void 0===t&&(t=\"undefined\"),null===t&&(t=\"null\"),!1===t&&(t=\"false\"),-1!==t.toString().toLowerCase().indexOf(e.trim())}function s(t,e,n,i){return t.filter(function(t){return o(i(t,n),e)})}function u(t){return t.filter(function(t){return!t.$isLabel})}function a(t,e){return function(n){return n.reduce(function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n},[])}}function l(t,e,i,r,o){return function(u){return u.map(function(u){var a;if(!u[i])return console.warn(\"Options passed to vue-multiselect do not contain groups, despite the config.\"),[];var l=s(u[i],t,e,o);return l.length?(a={},n.i(d.a)(a,r,u[r]),n.i(d.a)(a,i,l),a):[]})}}var c=n(59),f=n(54),p=(n.n(f),n(95)),h=(n.n(p),n(31)),d=(n.n(h),n(58)),v=n(91),g=(n.n(v),n(98)),y=(n.n(g),n(92)),m=(n.n(y),n(88)),b=(n.n(m),n(97)),_=(n.n(b),n(89)),x=(n.n(_),n(96)),w=(n.n(x),n(93)),S=(n.n(w),n(90)),O=(n.n(S),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce(function(t,e){return e(t)},t)}});e.a={data:function(){return{search:\"\",isOpen:!1,preferredOpenDirection:\"below\",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:\"Select option\"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return i(t)?\"\":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:\"Press enter to create a tag\"},tagPosition:{type:String,default:\"top\"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn(\"[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.\"),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||\"\",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):s(n,e,this.label,this.customLabel):this.groupValues?a(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(r(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&(\"bottom\"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map(function(e){return e[t.trackBy]}):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map(function(e){return t.customLabel(e,t.label).toString().toLowerCase()})},currentOptionLabel:function(){return this.multiple?this.searchable?\"\":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?\"\":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search=\"\",this.$emit(\"input\",this.multiple?[]:null))},search:function(){this.$emit(\"search-change\",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return O(l(e,n,this.groupValues,this.groupLabel,this.customLabel),a(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return O(a(this.groupValues,this.groupLabel),u)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return\"\";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?\"\":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)return void this.selectGroup(t);if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&(\"Tab\"!==e||this.pointerDirty)){if(t.isTag)this.$emit(\"tag\",t.label,this.id),this.search=\"\",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void(\"Tab\"!==e&&this.removeElement(t));this.$emit(\"select\",t,this.id),this.multiple?this.$emit(\"input\",this.internalValue.concat([t]),this.id):this.$emit(\"input\",t,this.id),this.clearOnSelect&&(this.search=\"\")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find(function(n){return n[e.groupLabel]===t.$groupLabel});if(n)if(this.wholeGroupSelected(n)){this.$emit(\"remove\",n[this.groupValues],this.id);var i=this.internalValue.filter(function(t){return-1===n[e.groupValues].indexOf(t)});this.$emit(\"input\",i,this.id)}else{var r=n[this.groupValues].filter(function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))});this.$emit(\"select\",r,this.id),this.$emit(\"input\",this.internalValue.concat(r),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every(function(t){return e.isSelected(t)||e.isOptionDisabled(t)})},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i=\"object\"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit(\"remove\",t,this.id),this.multiple){var r=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit(\"input\",r,this.id)}else this.$emit(\"input\",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf(\"Delete\")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=\"\"),this.$nextTick(function(){return t.$refs.search.focus()})):this.$el.focus(),this.$emit(\"open\",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=\"\"),this.$emit(\"close\",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if(\"undefined\"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||\"below\"===this.openDirection||\"bottom\"===this.openDirection?(this.preferredOpenDirection=\"below\",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection=\"above\",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){\"use strict\";var i=n(54),r=(n.n(i),n(31));n.n(r);e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer,\"multiselect__option--selected\":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return[\"multiselect__option--group\",\"multiselect__option--disabled\"];var i=this.options.find(function(t){return t[n.groupLabel]===e.$groupLabel});return i&&!this.wholeGroupDisabled(i)?[\"multiselect__option--group\",{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer},{\"multiselect__option--group-selected\":this.wholeGroupSelected(i)}]:\"multiselect__option--disabled\"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"Enter\",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){\"use strict\";var i=n(36),r=n(74),o=n(15),s=n(18);t.exports=n(72)(Array,\"Array\",function(t,e){this._t=s(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):\"keys\"==e?r(0,n):\"values\"==e?r(0,t[n]):r(0,[n,t[n]])},\"values\"),o.Arguments=o.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},function(t,e,n){\"use strict\";var i=n(31),r=(n.n(i),n(32)),o=n(33);e.a={name:\"vue-multiselect\",mixins:[r.a,o.a],props:{name:{type:String,default:\"\"},selectLabel:{type:String,default:\"Press enter to select\"},selectGroupLabel:{type:String,default:\"Press enter to select group\"},selectedLabel:{type:String,default:\"Selected\"},deselectLabel:{type:String,default:\"Press enter to remove\"},deselectGroupLabel:{type:String,default:\"Press enter to deselect group\"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return\"and \".concat(t,\" more\")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:\"\"},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:\"\"},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:\"\"},selectLabelText:function(){return this.showLabels?this.selectLabel:\"\"},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:\"\"},selectedLabelText:function(){return this.showLabels?this.selectedLabel:\"\"},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:\"100%\"}:{width:\"0\",position:\"absolute\",padding:\"0\"}},contentStyle:function(){return this.options.length?{display:\"inline-block\"}:{display:\"block\"}},isAbove:function(){return\"above\"===this.openDirection||\"top\"===this.openDirection||\"below\"!==this.openDirection&&\"bottom\"!==this.openDirection&&\"above\"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)(\"unscopables\"),r=Array.prototype;void 0==r[i]&&n(8)(r,i,{}),t.exports=function(t){r[i][t]=!0}},function(t,e,n){var i=n(18),r=n(19),o=n(85);t.exports=function(t){return function(e,n,s){var u,a=i(e),l=r(a.length),c=o(s,l);if(t&&n!=n){for(;l>c;)if((u=a[c++])!=u)return!0}else for(;l>c;c++)if((t||c in a)&&a[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var i=n(9),r=n(1)(\"toStringTag\"),o=\"Arguments\"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=s(e=Object(t),r))?n:o?i(e):\"Object\"==(u=i(e))&&\"function\"==typeof e.callee?\"Arguments\":u}},function(t,e,n){\"use strict\";var i=n(2);t.exports=function(){var t=i(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)(function(){return 7!=Object.defineProperty(n(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return\"Array\"==i(t)}},function(t,e,n){\"use strict\";function i(t){var e,n;this.promise=new t(function(t,i){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=i}),this.resolve=r(e),this.reject=r(n)}var r=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),r=n(76),o=n(22),s=n(27)(\"IE_PROTO\"),u=function(){},a=function(){var t,e=n(21)(\"iframe\"),i=o.length;for(e.style.display=\"none\",n(40).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(\"<script>document.F=Object<\\/script>\"),t.close(),a=t.F;i--;)delete a.prototype[o[i]];return a()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=i(t),n=new u,u.prototype=null,n[s]=t):n=a(),void 0===e?n:r(n,e)}},function(t,e,n){var i=n(79),r=n(25),o=n(18),s=n(29),u=n(12),a=n(41),l=Object.getOwnPropertyDescriptor;e.f=n(4)?l:function(t,e){if(t=o(t),e=s(e,!0),a)try{return l(t,e)}catch(t){}if(u(t,e))return r(!i.f.call(t,e),t[e])}},function(t,e,n){var i=n(12),r=n(18),o=n(37)(!1),s=n(27)(\"IE_PROTO\");t.exports=function(t,e){var n,u=r(t),a=0,l=[];for(n in u)n!=s&&i(u,n)&&l.push(n);for(;e.length>a;)i(u,n=e[a++])&&(~o(l,n)||l.push(n));return l}},function(t,e,n){var i=n(46),r=n(22);t.exports=Object.keys||function(t){return i(t,r)}},function(t,e,n){var i=n(2),r=n(5),o=n(43);t.exports=function(t,e){if(i(t),r(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var i=n(10),r=n(0),o=r[\"__core-js_shared__\"]||(r[\"__core-js_shared__\"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:i.version,mode:n(24)?\"pure\":\"global\",copyright:\"© 2018 Denis Pushkarev (zloirock.ru)\"})},function(t,e,n){var i=n(2),r=n(14),o=n(1)(\"species\");t.exports=function(t,e){var n,s=i(t).constructor;return void 0===s||void 0==(n=i(s)[o])?e:r(n)}},function(t,e,n){var i=n(3),r=n(16),o=n(7),s=n(84),u=\"[\"+s+\"]\",a=\"
\",l=RegExp(\"^\"+u+u+\"*\"),c=RegExp(u+u+\"*$\"),f=function(t,e,n){var r={},u=o(function(){return!!s[t]()||a[t]()!=a}),l=r[t]=u?e(p):s[t];n&&(r[n]=l),i(i.P+i.F*u,\"String\",r)},p=f.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(l,\"\")),2&e&&(t=t.replace(c,\"\")),t};t.exports=f},function(t,e,n){var i,r,o,s=n(11),u=n(68),a=n(40),l=n(21),c=n(0),f=c.process,p=c.setImmediate,h=c.clearImmediate,d=c.MessageChannel,v=c.Dispatch,g=0,y={},m=function(){var t=+this;if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},b=function(t){m.call(t.data)};p&&h||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return y[++g]=function(){u(\"function\"==typeof t?t:Function(t),e)},i(g),g},h=function(t){delete y[t]},\"process\"==n(9)(f)?i=function(t){f.nextTick(s(m,t,1))}:v&&v.now?i=function(t){v.now(s(m,t,1))}:d?(r=new d,o=r.port2,r.port1.onmessage=b,i=s(o.postMessage,o,1)):c.addEventListener&&\"function\"==typeof postMessage&&!c.importScripts?(i=function(t){c.postMessage(t+\"\",\"*\")},c.addEventListener(\"message\",b,!1)):i=\"onreadystatechange\"in l(\"script\")?function(t){a.appendChild(l(\"script\")).onreadystatechange=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(s(m,t,1),0)}),t.exports={set:p,clear:h}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(5),o=!0;\"find\"in[]&&Array(1).find(function(){o=!1}),i(i.P+i.F*o,\"Array\",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)(\"find\")},function(t,e,n){\"use strict\";var i,r,o,s,u=n(24),a=n(0),l=n(11),c=n(38),f=n(3),p=n(5),h=n(14),d=n(61),v=n(66),g=n(50),y=n(52).set,m=n(75)(),b=n(43),_=n(80),x=n(86),w=n(48),S=a.TypeError,O=a.process,L=O&&O.versions,k=L&&L.v8||\"\",P=a.Promise,T=\"process\"==c(O),V=function(){},E=r=b.f,A=!!function(){try{var t=P.resolve(1),e=(t.constructor={})[n(1)(\"species\")]=function(t){t(V,V)};return(T||\"function\"==typeof PromiseRejectionEvent)&&t.then(V)instanceof e&&0!==k.indexOf(\"6.6\")&&-1===x.indexOf(\"Chrome/66\")}catch(t){}}(),C=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},D=function(t,e){if(!t._n){t._n=!0;var n=t._c;m(function(){for(var i=t._v,r=1==t._s,o=0;n.length>o;)!function(e){var n,o,s,u=r?e.ok:e.fail,a=e.resolve,l=e.reject,c=e.domain;try{u?(r||(2==t._h&&$(t),t._h=1),!0===u?n=i:(c&&c.enter(),n=u(i),c&&(c.exit(),s=!0)),n===e.promise?l(S(\"Promise-chain cycle\")):(o=C(n))?o.call(n,a,l):a(n)):l(i)}catch(t){c&&!s&&c.exit(),l(t)}}(n[o++]);t._c=[],t._n=!1,e&&!t._h&&j(t)})}},j=function(t){y.call(a,function(){var e,n,i,r=t._v,o=N(t);if(o&&(e=_(function(){T?O.emit(\"unhandledRejection\",r,t):(n=a.onunhandledrejection)?n({promise:t,reason:r}):(i=a.console)&&i.error&&i.error(\"Unhandled promise rejection\",r)}),t._h=T||N(t)?2:1),t._a=void 0,o&&e.e)throw e.v})},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},$=function(t){y.call(a,function(){var e;T?O.emit(\"rejectionHandled\",t):(e=a.onrejectionhandled)&&e({promise:t,reason:t._v})})},F=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),D(e,!0))},M=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S(\"Promise can't be resolved itself\");(e=C(t))?m(function(){var i={_w:n,_d:!1};try{e.call(t,l(M,i,1),l(F,i,1))}catch(t){F.call(i,t)}}):(n._v=t,n._s=1,D(n,!1))}catch(t){F.call({_w:n,_d:!1},t)}}};A||(P=function(t){d(this,P,\"Promise\",\"_h\"),h(t),i.call(this);try{t(l(M,this,1),l(F,this,1))}catch(t){F.call(this,t)}},i=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n(81)(P.prototype,{then:function(t,e){var n=E(g(this,P));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=T?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&D(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new i;this.promise=t,this.resolve=l(M,t,1),this.reject=l(F,t,1)},b.f=E=function(t){return t===P||t===s?new o(t):r(t)}),f(f.G+f.W+f.F*!A,{Promise:P}),n(26)(P,\"Promise\"),n(83)(\"Promise\"),s=n(10).Promise,f(f.S+f.F*!A,\"Promise\",{reject:function(t){var e=E(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(u||!A),\"Promise\",{resolve:function(t){return w(u&&this===s?P:this,t)}}),f(f.S+f.F*!(A&&n(73)(function(t){P.all(t).catch(V)})),\"Promise\",{all:function(t){var e=this,n=E(e),i=n.resolve,r=n.reject,o=_(function(){var n=[],o=0,s=1;v(t,!1,function(t){var u=o++,a=!1;n.push(void 0),s++,e.resolve(t).then(function(t){a||(a=!0,n[u]=t,--s||i(n))},r)}),--s||i(n)});return o.e&&r(o.v),n.promise},race:function(t){var e=this,n=E(e),i=n.reject,r=_(function(){v(t,!1,function(t){e.resolve(t).then(n.resolve,i)})});return r.e&&i(r.v),n.promise}})},function(t,e,n){\"use strict\";var i=n(3),r=n(10),o=n(0),s=n(50),u=n(48);i(i.P+i.R,\"Promise\",{finally:function(t){var e=s(this,r.Promise||o.Promise),n=\"function\"==typeof t;return this.then(n?function(n){return u(e,t()).then(function(){return n})}:t,n?function(n){return u(e,t()).then(function(){throw n})}:t)}})},function(t,e,n){\"use strict\";function i(t){n(99)}var r=n(35),o=n(101),s=n(100),u=i,a=s(r.a,o.a,!1,u,null,null);e.a=a.exports},function(t,e,n){\"use strict\";function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}e.a=i},function(t,e,n){\"use strict\";function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"===i(Symbol.iterator)?function(t){return i(t)}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":i(t)})(t)}e.a=r},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(34),r=(n.n(i),n(55)),o=(n.n(r),n(56)),s=(n.n(o),n(57)),u=n(32),a=n(33);n.d(e,\"Multiselect\",function(){return s.a}),n.d(e,\"multiselectMixin\",function(){return u.a}),n.d(e,\"pointerMixin\",function(){return a.a}),e.default=s.a},function(t,e){t.exports=function(t,e,n,i){if(!(t instanceof e)||void 0!==i&&i in t)throw TypeError(n+\": incorrect invocation!\");return t}},function(t,e,n){var i=n(14),r=n(28),o=n(23),s=n(19);t.exports=function(t,e,n,u,a){i(e);var l=r(t),c=o(l),f=s(l.length),p=a?f-1:0,h=a?-1:1;if(n<2)for(;;){if(p in c){u=c[p],p+=h;break}if(p+=h,a?p<0:f<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;a?p>=0:f>p;p+=h)p in c&&(u=e(u,c[p],p,l));return u}},function(t,e,n){var i=n(5),r=n(42),o=n(1)(\"species\");t.exports=function(t){var e;return r(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),i(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var i=n(63);t.exports=function(t,e){return new(i(t))(e)}},function(t,e,n){\"use strict\";var i=n(8),r=n(6),o=n(7),s=n(16),u=n(1);t.exports=function(t,e,n){var a=u(t),l=n(s,a,\"\"[t]),c=l[0],f=l[1];o(function(){var e={};return e[a]=function(){return 7},7!=\"\"[t](e)})&&(r(String.prototype,t,c),i(RegExp.prototype,a,2==e?function(t,e){return f.call(t,this,e)}:function(t){return f.call(t,this)}))}},function(t,e,n){var i=n(11),r=n(70),o=n(69),s=n(2),u=n(19),a=n(87),l={},c={},e=t.exports=function(t,e,n,f,p){var h,d,v,g,y=p?function(){return t}:a(t),m=i(n,f,e?2:1),b=0;if(\"function\"!=typeof y)throw TypeError(t+\" is not iterable!\");if(o(y)){for(h=u(t.length);h>b;b++)if((g=e?m(s(d=t[b])[0],d[1]):m(t[b]))===l||g===c)return g}else for(v=y.call(t);!(d=v.next()).done;)if((g=r(v,m,d.value,e))===l||g===c)return g};e.BREAK=l,e.RETURN=c},function(t,e,n){var i=n(5),r=n(82).set;t.exports=function(t,e,n){var o,s=e.constructor;return s!==n&&\"function\"==typeof s&&(o=s.prototype)!==n.prototype&&i(o)&&r&&r(t,o),t}},function(t,e){t.exports=function(t,e,n){var i=void 0===n;switch(e.length){case 0:return i?t():t.call(n);case 1:return i?t(e[0]):t.call(n,e[0]);case 2:return i?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var i=n(15),r=n(1)(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[r]===t)}},function(t,e,n){var i=n(2);t.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&i(o.call(t)),e}}},function(t,e,n){\"use strict\";var i=n(44),r=n(25),o=n(26),s={};n(8)(s,n(1)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+\" Iterator\")}},function(t,e,n){\"use strict\";var i=n(24),r=n(3),o=n(6),s=n(8),u=n(15),a=n(71),l=n(26),c=n(78),f=n(1)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,y){a(n,e,d);var m,b,_,x=function(t){if(!p&&t in L)return L[t];switch(t){case\"keys\":case\"values\":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+\" Iterator\",S=\"values\"==v,O=!1,L=t.prototype,k=L[f]||L[\"@@iterator\"]||v&&L[v],P=k||x(v),T=v?S?x(\"entries\"):P:void 0,V=\"Array\"==e?L.entries||k:k;if(V&&(_=c(V.call(new t)))!==Object.prototype&&_.next&&(l(_,w,!0),i||\"function\"==typeof _[f]||s(_,f,h)),S&&k&&\"values\"!==k.name&&(O=!0,P=function(){return k.call(this)}),i&&!y||!p&&!O&&L[f]||s(L,f,P),u[e]=P,u[w]=h,v)if(m={values:S?P:x(\"values\"),keys:g?P:x(\"keys\"),entries:T},y)for(b in m)b in L||o(L,b,m[b]);else r(r.P+r.F*(p||O),e,m);return m}},function(t,e,n){var i=n(1)(\"iterator\"),r=!1;try{var o=[7][i]();o.return=function(){r=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var o=[7],s=o[i]();s.next=function(){return{done:n=!0}},o[i]=function(){return s},t(o)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var i=n(0),r=n(52).set,o=i.MutationObserver||i.WebKitMutationObserver,s=i.process,u=i.Promise,a=\"process\"==n(9)(s);t.exports=function(){var t,e,n,l=function(){var i,r;for(a&&(i=s.domain)&&i.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,i&&i.enter()};if(a)n=function(){s.nextTick(l)};else if(!o||i.navigator&&i.navigator.standalone)if(u&&u.resolve){var c=u.resolve(void 0);n=function(){c.then(l)}}else n=function(){r.call(i,l)};else{var f=!0,p=document.createTextNode(\"\");new o(l).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(i){var r={fn:i,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},function(t,e,n){var i=n(13),r=n(2),o=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){r(t);for(var n,s=o(e),u=s.length,a=0;u>a;)i.f(t,n=s[a++],e[n]);return t}},function(t,e,n){var i=n(46),r=n(22).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},function(t,e,n){var i=n(12),r=n(28),o=n(27)(\"IE_PROTO\"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var i=n(6);t.exports=function(t,e,n){for(var r in e)i(t,r,e[r],n);return t}},function(t,e,n){var i=n(5),r=n(2),o=function(t,e){if(r(t),!i(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,i){try{i=n(11)(Function.call,n(45).f(Object.prototype,\"__proto__\").set,2),i(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){\"use strict\";var i=n(0),r=n(13),o=n(4),s=n(1)(\"species\");t.exports=function(t){var e=i[t];o&&e&&!e[s]&&r.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r \\u2028\\u2029\\ufeff\"},function(t,e,n){var i=n(53),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},function(t,e,n){var i=n(0),r=i.navigator;t.exports=r&&r.userAgent||\"\"},function(t,e,n){var i=n(38),r=n(1)(\"iterator\"),o=n(15);t.exports=n(10).getIteratorMethod=function(t){if(void 0!=t)return t[r]||t[\"@@iterator\"]||o[i(t)]}},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(2);i(i.P+i.F*!n(17)([].filter,!0),\"Array\",{filter:function(t){return r(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),r=n(37)(!1),o=[].indexOf,s=!!o&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(s||!n(17)(o)),\"Array\",{indexOf:function(t){return s?o.apply(this,arguments)||0:r(this,t,arguments[1])}})},function(t,e,n){var i=n(3);i(i.S,\"Array\",{isArray:n(42)})},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(1);i(i.P+i.F*!n(17)([].map,!0),\"Array\",{map:function(t){return r(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),r=n(62);i(i.P+i.F*!n(17)([].reduce,!0),\"Array\",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var i=Date.prototype,r=i.toString,o=i.getTime;new Date(NaN)+\"\"!=\"Invalid Date\"&&n(6)(i,\"toString\",function(){var t=o.call(this);return t===t?r.call(this):\"Invalid Date\"})},function(t,e,n){n(4)&&\"g\"!=/./g.flags&&n(13).f(RegExp.prototype,\"flags\",{configurable:!0,get:n(39)})},function(t,e,n){n(65)(\"search\",1,function(t,e,n){return[function(n){\"use strict\";var i=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,i):new RegExp(n)[e](String(i))},n]})},function(t,e,n){\"use strict\";n(94);var i=n(2),r=n(39),o=n(4),s=/./.toString,u=function(t){n(6)(RegExp.prototype,\"toString\",t,!0)};n(7)(function(){return\"/a/b\"!=s.call({source:\"a\",flags:\"b\"})})?u(function(){var t=i(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!o&&t instanceof RegExp?r.call(t):void 0)}):\"toString\"!=s.name&&u(function(){return s.call(this)})},function(t,e,n){\"use strict\";n(51)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,n){for(var i=n(34),r=n(47),o=n(6),s=n(0),u=n(8),a=n(15),l=n(1),c=l(\"iterator\"),f=l(\"toStringTag\"),p=a.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=r(h),v=0;v<d.length;v++){var g,y=d[v],m=h[y],b=s[y],_=b&&b.prototype;if(_&&(_[c]||u(_,c,p),_[f]||u(_,f,y),a[y]=p,m))for(g in i)_[g]||o(_,g,i[g],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,i,r,o){var s,u=t=t||{},a=typeof t.default;\"object\"!==a&&\"function\"!==a||(s=t,u=t.default);var l=\"function\"==typeof u?u.options:u;e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),r&&(l._scopeId=r);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},l._ssrRegister=c):i&&(c=i),c){var f=l.functional,p=f?l.render:l.beforeCreate;f?(l._injectStyles=c,l.render=function(t,e){return c.call(e),p(t,e)}):l.beforeCreate=p?[].concat(p,c):[c]}return{esModule:s,exports:u,options:l}}},function(t,e,n){\"use strict\";var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"multiselect\",class:{\"multiselect--active\":t.isOpen,\"multiselect--disabled\":t.disabled,\"multiselect--above\":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return\"button\"in e||!t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")||!t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()}}},[t._t(\"caret\",[n(\"div\",{staticClass:\"multiselect__select\",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(\" \"),t._t(\"clear\",null,{search:t.search}),t._v(\" \"),n(\"div\",{ref:\"tags\",staticClass:\"multiselect__tags\"},[t._t(\"selection\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visibleValues.length>0,expression:\"visibleValues.length > 0\"}],staticClass:\"multiselect__tags-wrap\"},[t._l(t.visibleValues,function(e,i){return[t._t(\"tag\",[n(\"span\",{key:i,staticClass:\"multiselect__tag\"},[n(\"span\",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(\" \"),n(\"i\",{staticClass:\"multiselect__tag-icon\",attrs:{\"aria-hidden\":\"true\",tabindex:\"1\"},on:{keypress:function(n){if(!(\"button\"in n)&&t._k(n.keyCode,\"enter\",13,n.key,\"Enter\"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]})],2),t._v(\" \"),t.internalValue&&t.internalValue.length>t.limit?[t._t(\"limit\",[n(\"strong\",{staticClass:\"multiselect__strong\",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect__loading\"}},[t._t(\"loading\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.loading,expression:\"loading\"}],staticClass:\"multiselect__spinner\"})])],2),t._v(\" \"),t.searchable?n(\"input\",{ref:\"search\",staticClass:\"multiselect__input\",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:\"text\",autocomplete:\"nope\",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()},keydown:[function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"delete\",[8,46],e.key,[\"Backspace\",\"Delete\"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(\" \"),t.isSingleLabelVisible?n(\"span\",{staticClass:\"multiselect__single\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"singleLabel\",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(\" \"),t.isPlaceholderVisible?n(\"span\",{staticClass:\"multiselect__placeholder\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"placeholder\",[t._v(\"\\n \"+t._s(t.placeholder)+\"\\n \")])],2):t._e()],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isOpen,expression:\"isOpen\"}],ref:\"list\",staticClass:\"multiselect__content-wrapper\",style:{maxHeight:t.optimizedHeight+\"px\"},attrs:{tabindex:\"-1\"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n(\"ul\",{staticClass:\"multiselect__content\",style:t.contentStyle},[t._t(\"beforeList\"),t._v(\" \"),t.multiple&&t.max===t.internalValue.length?n(\"li\",[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"maxElements\",[t._v(\"Maximum of \"+t._s(t.max)+\" options selected. First remove a selected option to select another.\")])],2)]):t._e(),t._v(\" \"),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,function(e,i){return n(\"li\",{key:i,staticClass:\"multiselect__element\"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n(\"span\",{staticClass:\"multiselect__option\",class:t.optionHighlight(i,e),attrs:{\"data-select\":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,\"data-selected\":t.selectedLabelText,\"data-deselect\":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(i)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(\" \"),e&&(e.$isLabel||e.$isDisabled)?n(\"span\",{staticClass:\"multiselect__option\",class:t.groupHighlight(i,e),attrs:{\"data-select\":t.groupSelect&&t.selectGroupLabelText,\"data-deselect\":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(i)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])}):t._e(),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:\"showNoResults && (filteredOptions.length === 0 && search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noResult\",[t._v(\"No elements found. Consider changing the search query.\")],{search:t.search})],2)]),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:\"showNoOptions && (options.length === 0 && !search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noOptions\",[t._v(\"List is empty.\")])],2)]),t._v(\" \"),t._t(\"afterList\")],2)])])],2)},r=[],o={render:i,staticRenderFns:r};e.a=o}])});","\"use strict\";\n\nrequire(\"core-js/modules/es.array.for-each\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getRequestToken = getRequestToken;\nexports.onRequestTokenUpdate = onRequestTokenUpdate;\n\nvar _eventBus = require(\"@nextcloud/event-bus\");\n\nvar tokenElement = document.getElementsByTagName('head')[0];\nvar token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null;\nvar observers = [];\n\nfunction getRequestToken() {\n return token;\n}\n\nfunction onRequestTokenUpdate(observer) {\n observers.push(observer);\n} // Listen to server event and keep token in sync\n\n\n(0, _eventBus.subscribe)('csrf-token-update', function (e) {\n token = e.token;\n observers.forEach(function (observer) {\n try {\n observer(e.token);\n } catch (e) {\n console.error('error updating CSRF token observer', e);\n }\n });\n});\n//# sourceMappingURL=requesttoken.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ProxyBus = void 0;\n\nvar _valid = _interopRequireDefault(require(\"semver/functions/valid\"));\n\nvar _major = _interopRequireDefault(require(\"semver/functions/major\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar packageJson = {\n name: \"@nextcloud/event-bus\",\n version: \"1.2.0\",\n description: \"\",\n main: \"dist/index.js\",\n types: \"dist/index.d.ts\",\n scripts: {\n build: \"babel ./lib --out-dir dist --extensions '.ts,.tsx' --source-maps && tsc --emitDeclarationOnly\",\n \"build:doc\": \"typedoc --excludeNotExported --mode file --out dist/doc lib/index.ts && touch dist/doc/.nojekyll\",\n \"check-types\": \"tsc\",\n dev: \"babel ./lib --out-dir dist --extensions '.ts,.tsx' --watch\",\n test: \"jest\",\n \"test:watch\": \"jest --watchAll\"\n },\n keywords: [\"nextcloud\"],\n homepage: \"https://github.com/nextcloud/nextcloud-event-bus#readme\",\n author: \"Christoph Wurst\",\n license: \"GPL-3.0-or-later\",\n repository: {\n type: \"git\",\n url: \"https://github.com/nextcloud/nextcloud-event-bus\"\n },\n dependencies: {\n \"@types/semver\": \"^7.1.0\",\n \"core-js\": \"^3.6.2\",\n semver: \"^7.3.2\"\n },\n devDependencies: {\n \"@babel/cli\": \"^7.6.0\",\n \"@babel/core\": \"^7.6.0\",\n \"@babel/plugin-proposal-class-properties\": \"^7.5.5\",\n \"@babel/preset-env\": \"^7.6.0\",\n \"@babel/preset-typescript\": \"^7.6.0\",\n \"@nextcloud/browserslist-config\": \"^1.0.0\",\n \"babel-jest\": \"^26.0.1\",\n \"babel-plugin-inline-json-import\": \"^0.3.2\",\n jest: \"^26.0.1\",\n typedoc: \"^0.17.2\",\n typescript: \"^3.6.3\"\n },\n browserslist: [\"extends @nextcloud/browserslist-config\"]\n};\n\nvar ProxyBus = /*#__PURE__*/function () {\n function ProxyBus(bus) {\n _classCallCheck(this, ProxyBus);\n\n _defineProperty(this, \"bus\", void 0);\n\n if (typeof bus.getVersion !== 'function' || !(0, _valid.default)(bus.getVersion())) {\n console.warn('Proxying an event bus with an unknown or invalid version');\n } else if ((0, _major.default)(bus.getVersion()) !== (0, _major.default)(this.getVersion())) {\n console.warn('Proxying an event bus of version ' + bus.getVersion() + ' with ' + this.getVersion());\n }\n\n this.bus = bus;\n }\n\n _createClass(ProxyBus, [{\n key: \"getVersion\",\n value: function getVersion() {\n return packageJson.version;\n }\n }, {\n key: \"subscribe\",\n value: function subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n }, {\n key: \"emit\",\n value: function emit(name, event) {\n this.bus.emit(name, event);\n }\n }]);\n\n return ProxyBus;\n}();\n\nexports.ProxyBus = ProxyBus;\n//# sourceMappingURL=ProxyBus.js.map","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const {MAX_LENGTH} = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parse = (version, options) => {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","\"use strict\";\n\nrequire(\"core-js/modules/es.array.concat\");\n\nrequire(\"core-js/modules/es.array.filter\");\n\nrequire(\"core-js/modules/es.array.for-each\");\n\nrequire(\"core-js/modules/es.array.iterator\");\n\nrequire(\"core-js/modules/es.map\");\n\nrequire(\"core-js/modules/es.object.to-string\");\n\nrequire(\"core-js/modules/es.string.iterator\");\n\nrequire(\"core-js/modules/web.dom-collections.for-each\");\n\nrequire(\"core-js/modules/web.dom-collections.iterator\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SimpleBus = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar packageJson = {\n name: \"@nextcloud/event-bus\",\n version: \"1.2.0\",\n description: \"\",\n main: \"dist/index.js\",\n types: \"dist/index.d.ts\",\n scripts: {\n build: \"babel ./lib --out-dir dist --extensions '.ts,.tsx' --source-maps && tsc --emitDeclarationOnly\",\n \"build:doc\": \"typedoc --excludeNotExported --mode file --out dist/doc lib/index.ts && touch dist/doc/.nojekyll\",\n \"check-types\": \"tsc\",\n dev: \"babel ./lib --out-dir dist --extensions '.ts,.tsx' --watch\",\n test: \"jest\",\n \"test:watch\": \"jest --watchAll\"\n },\n keywords: [\"nextcloud\"],\n homepage: \"https://github.com/nextcloud/nextcloud-event-bus#readme\",\n author: \"Christoph Wurst\",\n license: \"GPL-3.0-or-later\",\n repository: {\n type: \"git\",\n url: \"https://github.com/nextcloud/nextcloud-event-bus\"\n },\n dependencies: {\n \"@types/semver\": \"^7.1.0\",\n \"core-js\": \"^3.6.2\",\n semver: \"^7.3.2\"\n },\n devDependencies: {\n \"@babel/cli\": \"^7.6.0\",\n \"@babel/core\": \"^7.6.0\",\n \"@babel/plugin-proposal-class-properties\": \"^7.5.5\",\n \"@babel/preset-env\": \"^7.6.0\",\n \"@babel/preset-typescript\": \"^7.6.0\",\n \"@nextcloud/browserslist-config\": \"^1.0.0\",\n \"babel-jest\": \"^26.0.1\",\n \"babel-plugin-inline-json-import\": \"^0.3.2\",\n jest: \"^26.0.1\",\n typedoc: \"^0.17.2\",\n typescript: \"^3.6.3\"\n },\n browserslist: [\"extends @nextcloud/browserslist-config\"]\n};\n\nvar SimpleBus = /*#__PURE__*/function () {\n function SimpleBus() {\n _classCallCheck(this, SimpleBus);\n\n _defineProperty(this, \"handlers\", new Map());\n }\n\n _createClass(SimpleBus, [{\n key: \"getVersion\",\n value: function getVersion() {\n return packageJson.version;\n }\n }, {\n key: \"subscribe\",\n value: function subscribe(name, handler) {\n this.handlers.set(name, (this.handlers.get(name) || []).concat(handler));\n }\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe(name, handler) {\n this.handlers.set(name, (this.handlers.get(name) || []).filter(function (h) {\n return h != handler;\n }));\n }\n }, {\n key: \"emit\",\n value: function emit(name, event) {\n (this.handlers.get(name) || []).forEach(function (h) {\n try {\n h(event);\n } catch (e) {\n console.error('could not invoke event listener', e);\n }\n });\n }\n }]);\n\n return SimpleBus;\n}();\n\nexports.SimpleBus = SimpleBus;\n//# sourceMappingURL=SimpleBus.js.map","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCurrentUser = getCurrentUser;\n/// <reference types=\"@nextcloud/typings\" />\nvar uidElement = document.getElementsByTagName('head')[0];\nvar uid = uidElement ? uidElement.getAttribute('data-user') : null;\nvar displayNameElement = document.getElementsByTagName('head')[0];\nvar displayName = displayNameElement ? displayNameElement.getAttribute('data-user-displayname') : null;\nvar isAdmin = typeof OC === 'undefined' ? false : OC.isUserAdmin();\n\nfunction getCurrentUser() {\n if (uid === null) {\n return null;\n }\n\n return {\n uid: uid,\n displayName: displayName,\n isAdmin: isAdmin\n };\n}\n//# sourceMappingURL=user.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\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 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 global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\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 || inspectSource(this);\n});\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 global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\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 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 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 global = require('../internals/global');\n\nmodule.exports = global;\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","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","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(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","exports.f = Object.getOwnPropertySymbols;\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","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","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\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 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 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","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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _scopedstorage = _interopRequireDefault(require(\"./scopedstorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar StorageBuilder =\n/*#__PURE__*/\nfunction () {\n function StorageBuilder(appId) {\n _classCallCheck(this, StorageBuilder);\n\n _defineProperty(this, \"appId\", void 0);\n\n _defineProperty(this, \"persisted\", false);\n\n _defineProperty(this, \"clearedOnLogout\", false);\n\n this.appId = appId;\n }\n\n _createClass(StorageBuilder, [{\n key: \"persist\",\n value: function persist() {\n var _persist = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.persisted = _persist;\n return this;\n }\n }, {\n key: \"clearOnLogout\",\n value: function clearOnLogout() {\n var clear = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.clearedOnLogout = clear;\n return this;\n }\n }, {\n key: \"build\",\n value: function build() {\n return new _scopedstorage.default(this.appId, this.persisted ? window.localStorage : window.sessionStorage, !this.clearedOnLogout);\n }\n }]);\n\n return StorageBuilder;\n}();\n\nexports.default = StorageBuilder;\n//# sourceMappingURL=storagebuilder.js.map","'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');\nvar V8_VERSION = require('../internals/v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !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","'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\";\n\nrequire(\"core-js/modules/es.array.concat\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadState = loadState;\n\n/**\n * @param app app ID, e.g. \"mail\"\n * @param key name of the property\n * @param fallback optional parameter to use as default value\n * @throws if the key can't be found\n */\nfunction loadState(app, key, fallback) {\n var elem = document.querySelector(\"#initial-state-\".concat(app, \"-\").concat(key));\n\n if (elem === null) {\n if (fallback !== undefined) {\n return fallback;\n }\n\n throw new Error(\"Could not find initial state \".concat(key, \" of \").concat(app));\n }\n\n try {\n return JSON.parse(atob(elem.value));\n } catch (e) {\n throw new Error(\"Could not parse initial state \".concat(key, \" of \").concat(app));\n }\n}\n//# sourceMappingURL=index.js.map","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_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 isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\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.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '"');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\n\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; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/Multiselect\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/Multiselect\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/Multiselect\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/components/Multiselect/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=script&lang=js&\":\n/*!*****************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Avatar/Avatar.vue?vue&type=script&lang=js& ***!\n \\*****************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ \"regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_from_code_point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.from-code-point.js */ \"core-js/modules/es.string.from-code-point.js\");\n/* harmony import */ var core_js_modules_es_string_from_code_point_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_from_code_point_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_code_point_at_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.code-point-at.js */ \"core-js/modules/es.string.code-point-at.js\");\n/* harmony import */ var core_js_modules_es_string_code_point_at_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_code_point_at_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.promise.js */ \"core-js/modules/es.promise.js\");\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _nextcloud_browser_storage__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @nextcloud/browser-storage */ \"@nextcloud/browser-storage\");\n/* harmony import */ var _nextcloud_browser_storage__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_browser_storage__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var v_click_outside__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! v-click-outside */ \"v-click-outside\");\n/* harmony import */ var v_click_outside__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(v_click_outside__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _PopoverMenu__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../PopoverMenu */ \"./src/components/PopoverMenu/index.js\");\n/* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @nextcloud/auth */ \"@nextcloud/auth\");\n/* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_auth__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @nextcloud/event-bus */ \"@nextcloud/event-bus\");\n/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @nextcloud/axios */ \"@nextcloud/axios\");\n/* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_axios__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @nextcloud/router */ \"@nextcloud/router\");\n/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_router__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _directives_Tooltip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../directives/Tooltip */ \"./src/directives/Tooltip/index.js\");\n/* harmony import */ var _functions_usernameToColor__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../functions/usernameToColor */ \"./src/functions/usernameToColor/index.js\");\n/* harmony import */ var _mixins__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../mixins */ \"./src/mixins/index.js\");\n/* harmony import */ var _Popover_Popover__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../Popover/Popover */ \"./src/components/Popover/Popover.vue\");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\nvar browserStorage = Object(_nextcloud_browser_storage__WEBPACK_IMPORTED_MODULE_10__[\"getBuilder\"])('nextcloud').persist().build();\n\nfunction getUserHasAvatar(userId) {\n var flag = browserStorage.getItem('user-has-avatar.' + userId);\n\n if (typeof flag === 'string') {\n return Boolean(flag);\n }\n\n return null;\n}\n\nfunction setUserHasAvatar(userId, flag) {\n if (userId) {\n browserStorage.setItem('user-has-avatar.' + userId, flag);\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Avatar',\n directives: {\n tooltip: _directives_Tooltip__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n ClickOutside: v_click_outside__WEBPACK_IMPORTED_MODULE_11__[\"directive\"]\n },\n components: {\n Popover: _Popover_Popover__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n PopoverMenu: _PopoverMenu__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n },\n mixins: [_mixins__WEBPACK_IMPORTED_MODULE_19__[\"userStatus\"]],\n props: {\n /**\n * Set a custom url to the avatar image\n * either the url, user or displayName property must be defined\n */\n url: {\n type: String,\n default: undefined\n },\n\n /**\n * Set a css icon-class for an icon to be used instead of the avatar.\n */\n iconClass: {\n type: String,\n default: undefined\n },\n\n /**\n * Set the user id to fetch the avatar\n * either the url, user or displayName property must be defined\n */\n user: {\n type: String,\n default: undefined\n },\n\n /**\n * Whether or not to display the user-status\n */\n showUserStatus: {\n type: Boolean,\n default: true\n },\n\n /**\n * Whether or not to the status-icon should be used instead of online/away\n */\n showUserStatusCompact: {\n type: Boolean,\n default: true\n },\n\n /**\n * When the user status was preloaded via another source it can be handed in with this property to save the request.\n * If this property is not set the status will be fetched automatically.\n * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n */\n preloadedUserStatus: {\n type: Object,\n default: undefined\n },\n\n /**\n * Is the user a guest user (then we have to user a different endpoint)\n */\n isGuest: {\n type: Boolean,\n default: false\n },\n\n /**\n * Set a display name that will be rendered as a tooltip\n * either the url, user or displayName property must be defined\n * specify just the displayname to generate a placeholder avatar without\n * trying to fetch the avatar based on the user id\n */\n displayName: {\n type: String,\n default: undefined\n },\n\n /**\n * Set a size in px for the rendered avatar\n */\n size: {\n type: Number,\n default: 32\n },\n\n /**\n * Placeholder avatars will be automatically generated when this is set to true\n */\n allowPlaceholder: {\n type: Boolean,\n default: true\n },\n\n /**\n * Disable the tooltip\n */\n disableTooltip: {\n type: Boolean,\n default: false\n },\n\n /**\n * Disable the menu\n */\n disableMenu: {\n type: Boolean,\n default: false\n },\n\n /**\n * Declares a custom tooltip when not null\n * Fallback will be the displayName\n *\n * requires disableTooltip not to be set to true\n */\n tooltipMessage: {\n type: String,\n default: null\n },\n\n /**\n * Declares username is not a user's name, when true.\n * Prevents loading user's avatar from server and forces generating colored initials,\n * i.e. if the user is a group\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n\n /**\n * DEPRECATED!\n * This prop will be removed with nc/vue 3.0\n *\n * Declares a status indicator on the avatar\n * Available options are `positive`, `negative`, `neutral`\n */\n status: {\n type: String,\n default: null,\n validator: function validator(value) {\n switch (value) {\n case 'positive':\n case 'negative':\n case 'neutral':\n return true;\n }\n\n return false;\n }\n },\n\n /**\n * Declares a different color to be used with the status indicator\n */\n statusColor: {\n type: [Number, String],\n default: null,\n validator: function validator(value) {\n return /^([a-f0-9]{3}){1,2}$/i.test(value);\n }\n },\n\n /**\n * Choose the avatar menu alignment.\n * Possible values are `left`, `center`, `right`.\n */\n menuPosition: {\n type: String,\n default: 'center'\n },\n\n /**\n * Selector for the popover menu container\n */\n menuContainer: {\n type: String,\n default: 'body'\n }\n },\n data: function data() {\n return {\n avatarUrlLoaded: null,\n avatarSrcSetLoaded: null,\n userDoesNotExist: false,\n isAvatarLoaded: false,\n isMenuLoaded: false,\n contactsMenuLoading: false,\n contactsMenuActions: [],\n contactsMenuOpenState: false\n };\n },\n computed: {\n canDisplayUserStatus: function canDisplayUserStatus() {\n return this.showUserStatus && this.hasStatus && ['online', 'away', 'dnd'].includes(this.userStatus.status);\n },\n showUserStatusIconOnAvatar: function showUserStatusIconOnAvatar() {\n return this.showUserStatus && this.showUserStatusCompact && this.hasStatus && this.userStatus.status !== 'dnd' && this.userStatus.icon;\n },\n getUserIdentifier: function getUserIdentifier() {\n if (this.isDisplayNameDefined) {\n return this.displayName;\n }\n\n if (this.isUserDefined) {\n return this.user;\n }\n\n return '';\n },\n isUserDefined: function isUserDefined() {\n return typeof this.user !== 'undefined';\n },\n isDisplayNameDefined: function isDisplayNameDefined() {\n return typeof this.displayName !== 'undefined';\n },\n isUrlDefined: function isUrlDefined() {\n return typeof this.url !== 'undefined';\n },\n hasMenu: function hasMenu() {\n var _getCurrentUser;\n\n if (this.disableMenu) {\n return false;\n }\n\n if (this.isMenuLoaded) {\n return this.menu.length > 0;\n }\n\n return !(this.user === ((_getCurrentUser = Object(_nextcloud_auth__WEBPACK_IMPORTED_MODULE_13__[\"getCurrentUser\"])()) === null || _getCurrentUser === void 0 ? void 0 : _getCurrentUser.uid) || this.userDoesNotExist || this.url);\n },\n shouldShowPlaceholder: function shouldShowPlaceholder() {\n return this.allowPlaceholder && this.userDoesNotExist;\n },\n avatarStyle: function avatarStyle() {\n var style = {\n width: this.size + 'px',\n height: this.size + 'px',\n lineHeight: this.size + 'px',\n fontSize: Math.round(this.size * 0.55) + 'px'\n };\n\n if (!this.iconClass && !this.avatarSrcSetLoaded) {\n var rgb = Object(_functions_usernameToColor__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(this.getUserIdentifier);\n style.backgroundColor = 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\n }\n\n return style;\n },\n tooltip: function tooltip() {\n if (this.disableTooltip) {\n return false;\n }\n\n if (this.tooltipMessage) {\n return this.tooltipMessage;\n }\n\n return this.displayName;\n },\n initials: function initials() {\n var initials;\n\n if (this.shouldShowPlaceholder) {\n var user = this.getUserIdentifier;\n var idx = user.indexOf(' ');\n\n if (user === '') {\n initials = '?';\n } else {\n initials = String.fromCodePoint(user.codePointAt(0));\n\n if (idx !== -1) {\n initials = initials.concat(String.fromCodePoint(user.codePointAt(idx + 1)));\n }\n }\n }\n\n return initials.toUpperCase();\n },\n menu: function menu() {\n var actions = this.contactsMenuActions.map(function (item) {\n return {\n href: item.hyperlink,\n icon: item.icon,\n longtext: item.title\n };\n });\n\n function escape(html) {\n var text = document.createTextNode(html);\n var p = document.createElement('p');\n p.appendChild(text);\n return p.innerHTML;\n }\n\n if (this.showUserStatus && (this.userStatus.icon || this.userStatus.message)) {\n return [{\n href: '#',\n icon: \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><text x='0' y='14' font-size='14'>\".concat(escape(this.userStatus.icon), \"</text></svg>\"),\n text: \"\".concat(this.userStatus.message)\n }].concat(actions);\n }\n\n return actions;\n }\n },\n watch: {\n url: function url() {\n this.userDoesNotExist = false;\n this.loadAvatarUrl();\n },\n user: function user() {\n this.userDoesNotExist = false;\n this.isMenuLoaded = false;\n this.loadAvatarUrl();\n }\n },\n mounted: function mounted() {\n this.loadAvatarUrl();\n\n if (this.showUserStatus && this.user && !this.isNoUser) {\n if (!this.preloadedUserStatus) {\n this.fetchUserStatus(this.user);\n } else {\n this.userStatus.status = this.preloadedUserStatus.status || '';\n this.userStatus.message = this.preloadedUserStatus.message || '';\n this.userStatus.icon = this.preloadedUserStatus.icon || '';\n this.hasStatus = this.preloadedUserStatus.status !== null;\n }\n\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_14__[\"subscribe\"])('user_status:status.updated', this.handleUserStatusUpdated);\n }\n },\n beforeDestroyed: function beforeDestroyed() {\n if (this.showUserStatus && this.user && !this.isNoUser) {\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_14__[\"unsubscribe\"])('user_status:status.updated', this.handleUserStatusUpdated);\n }\n },\n methods: {\n handleUserStatusUpdated: function handleUserStatusUpdated(state) {\n if (this.user === state.userId) {\n this.userStatus = {\n status: state.status,\n icon: state.icon,\n message: state.message\n };\n }\n },\n toggleMenu: function toggleMenu() {\n var _this = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_this.hasMenu) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n if (_this.contactsMenuOpenState) {\n _context.next = 5;\n break;\n }\n\n _context.next = 5;\n return _this.fetchContactsMenu();\n\n case 5:\n _this.contactsMenuOpenState = !_this.contactsMenuOpenState;\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n closeMenu: function closeMenu() {\n this.contactsMenuOpenState = false;\n },\n fetchContactsMenu: function fetchContactsMenu() {\n var _this2 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var user, _yield$axios$post, data;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _this2.contactsMenuLoading = true;\n _context2.prev = 1;\n user = encodeURIComponent(_this2.user);\n _context2.next = 5;\n return _nextcloud_axios__WEBPACK_IMPORTED_MODULE_15___default.a.post(Object(_nextcloud_router__WEBPACK_IMPORTED_MODULE_16__[\"generateUrl\"])('contactsmenu/findOne'), \"shareType=0&shareWith=\".concat(user));\n\n case 5:\n _yield$axios$post = _context2.sent;\n data = _yield$axios$post.data;\n _this2.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions;\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](1);\n _this2.contactsMenuOpenState = false;\n\n case 13:\n _this2.contactsMenuLoading = false;\n _this2.isMenuLoaded = true;\n\n case 15:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[1, 10]]);\n }))();\n },\n\n /**\n * Handle avatar loading if user or url defined\n */\n loadAvatarUrl: function loadAvatarUrl() {\n this.isAvatarLoaded = false;\n /** Only run avatar image loading if either user or url property is defined */\n\n if (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser)) {\n this.isAvatarLoaded = true;\n this.userDoesNotExist = true;\n return;\n } // Directly use the url if defined\n\n\n if (this.isUrlDefined) {\n this.updateImageIfValid(this.url);\n return;\n }\n\n var avatarUrl = this.avatarUrlGenerator(this.user, this.size);\n var srcset = [avatarUrl + ' 1x', this.avatarUrlGenerator(this.user, this.size * 2) + ' 2x', this.avatarUrlGenerator(this.user, this.size * 4) + ' 4x'].join(', ');\n this.updateImageIfValid(avatarUrl, srcset);\n },\n\n /**\n * Generate an avatar url from the server's avatar endpoint\n *\n * @param {string} user the user id\n * @param {number} size the desired size\n * @returns {string}\n */\n avatarUrlGenerator: function avatarUrlGenerator(user, size) {\n var _getCurrentUser2;\n\n var url = '/avatar/{user}/{size}';\n\n if (this.isGuest) {\n url = '/avatar/guest/{user}/{size}';\n }\n\n var avatarUrl = Object(_nextcloud_router__WEBPACK_IMPORTED_MODULE_16__[\"generateUrl\"])(url, {\n user: user,\n size: size\n }); // eslint-disable-next-line camelcase\n\n if (user === ((_getCurrentUser2 = Object(_nextcloud_auth__WEBPACK_IMPORTED_MODULE_13__[\"getCurrentUser\"])()) === null || _getCurrentUser2 === void 0 ? void 0 : _getCurrentUser2.uid) && typeof oc_userconfig !== 'undefined') {\n avatarUrl += '?v=' + oc_userconfig.avatar.version;\n }\n\n return avatarUrl;\n },\n\n /**\n * Check if the provided url is valid and update Avatar if so\n *\n * @param {string} url the avatar url\n * @param {array} srcset the avatar srcset\n */\n updateImageIfValid: function updateImageIfValid(url) {\n var _this3 = this;\n\n var srcset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n // skip loading\n var userHasAvatar = getUserHasAvatar(this.user);\n\n if (this.isUserDefined && typeof userHasAvatar === 'boolean') {\n this.isAvatarLoaded = true;\n this.avatarUrlLoaded = url;\n\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n\n if (userHasAvatar === false) {\n this.userDoesNotExist = true;\n }\n\n return;\n }\n\n var img = new Image();\n\n img.onload = function () {\n _this3.avatarUrlLoaded = url;\n\n if (srcset) {\n _this3.avatarSrcSetLoaded = srcset;\n }\n\n _this3.isAvatarLoaded = true; // re-get to avoid concurrent access\n\n setUserHasAvatar(_this3.user, true);\n };\n\n img.onerror = function () {\n console.debug('Invalid avatar url', url); // Avatar is invalid, reset\n\n _this3.avatarUrlLoaded = null;\n _this3.avatarSrcSetLoaded = null;\n _this3.userDoesNotExist = true;\n _this3.isAvatarLoaded = false;\n setUserHasAvatar(_this3.user, false);\n };\n\n if (srcset) {\n img.srcset = srcset;\n }\n\n img.src = url;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Highlight/Highlight.vue?vue&type=script&lang=js&\":\n/*!***********************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Highlight/Highlight.vue?vue&type=script&lang=js& ***!\n \\***********************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ \"core-js/modules/es.string.search.js\");\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */ \"core-js/modules/es.array.reduce.js\");\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ \"core-js/modules/es.object.keys.js\");\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"core-js/modules/es.symbol.js\");\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ \"core-js/modules/es.object.get-own-property-descriptor.js\");\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ \"core-js/modules/es.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _utils_FindRanges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/FindRanges */ \"./src/utils/FindRanges.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Highlight',\n props: {\n /**\n * The string to display\n */\n text: {\n type: String,\n default: ''\n },\n\n /**\n * The string to match and highlight\n */\n search: {\n type: String,\n default: ''\n },\n\n /**\n * The ranges to highlight, takes precedence over the search prop.\n */\n highlight: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n /**\n * The indice ranges which should be highlighted.\n * If an array with ranges is provided, we use it. Otherwise\n * we calculate it based on the provided substring to highlight.\n *\n * @returns {Array} The array of ranges to highlight\n */\n ranges: function ranges() {\n var _this = this;\n\n var ranges = []; // If the search term and the highlight array is empty, return early with empty array\n\n if (!this.search && this.highlight.length === 0) {\n return ranges;\n } // If there are ranges to highlight provided, we use this array.\n\n\n if (this.highlight.length > 0) {\n ranges = this.highlight; // Otherwise we check the text to highlight for matches of the search term.\n } else {\n ranges = Object(_utils_FindRanges__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(this.text, this.search);\n }\n /**\n * Validate the ranges array to be within the string length\n * and discard ranges which are completely out of bonds.\n */\n\n\n return ranges.reduce(function (validRanges, range) {\n if (range.start < _this.text.length && range.end > 0) {\n validRanges.push({\n start: range.start < 0 ? 0 : range.start,\n end: range.end > _this.text.length ? _this.text.length : range.end\n });\n }\n\n return validRanges;\n }, []);\n },\n\n /**\n * Calculate the different chunks to show based on the ranges to highlight.\n *\n * @returns {Array} The chunks\n */\n chunks: function chunks() {\n // If the ranges array is empty, show only one chunk with all text\n if (this.ranges.length === 0) {\n return [{\n start: 0,\n end: this.text.length,\n highlight: false,\n text: this.text\n }];\n } // Calculate the chunks\n\n\n var chunks = [];\n var currentIndex = 0;\n var currentRange = 0; // Iterate over all characters in the text\n\n while (currentIndex < this.text.length) {\n // Get the first range to highlight\n var range = this.ranges[currentRange]; // If the range starts at the current index, construct a chunk to highlight,\n // set the next range and continue with the next iteration.\n\n if (range.start === currentIndex) {\n chunks.push(_objectSpread(_objectSpread({}, range), {}, {\n highlight: true,\n text: this.text.substr(range.start, range.end - range.start)\n }));\n currentRange++;\n currentIndex = range.end; // If this was the last range to highlight and we haven't reached the end of the text,\n // add the rest of the text without highlighting.\n\n if (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n chunks.push({\n start: currentIndex,\n end: this.text.length,\n highlight: false,\n text: this.text.substr(currentIndex, this.text.length - currentIndex)\n }); // Set the current index so the while loop ends.\n\n currentIndex = this.text.length;\n }\n\n continue;\n } // If the current range does start after the current index, construct a chunk without\n // highlighting and set the current index to the start of the current range.\n\n\n chunks.push({\n start: currentIndex,\n end: range.start,\n highlight: false,\n text: this.text.substr(currentIndex, range.start - currentIndex)\n });\n currentIndex = range.start;\n }\n\n return chunks;\n }\n },\n\n /**\n * The render function to display the component\n *\n * @param {Function} createElement The function to create VNodes\n * @returns {VNodes} The created VNodes\n */\n render: function render(createElement) {\n if (!this.ranges.length) {\n return createElement('span', {}, this.text);\n }\n\n return createElement('span', {}, this.chunks.map(function (chunk) {\n return chunk.highlight ? createElement('strong', {}, chunk.text) : chunk.text;\n }));\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=script&lang=js&\":\n/*!*****************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=script&lang=js& ***!\n \\*****************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \"core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Avatar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Avatar */ \"./src/components/Avatar/index.js\");\n/* harmony import */ var _Highlight__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Highlight */ \"./src/components/Highlight/index.js\");\n/* harmony import */ var _mixins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins */ \"./src/mixins/index.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n // global margin, ^2 ratio\n\nvar margin = 8;\nvar defaultSize = 32;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'ListItemIcon',\n components: {\n Avatar: _Avatar__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Highlight: _Highlight__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n mixins: [_mixins__WEBPACK_IMPORTED_MODULE_4__[\"userStatus\"]],\n props: {\n /**\n * Default first line text\n */\n title: {\n type: String,\n required: true\n },\n\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subtitle: {\n type: String,\n default: ''\n },\n\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: ''\n },\n\n /**\n * Search within the highlight of title/subtitle\n */\n search: {\n type: String,\n default: ''\n },\n\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n\n /**\n * Disable the margins of this component.\n * Useful for integration in Multiselect for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to title\n */\n displayName: {\n type: String,\n default: null\n },\n\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n margin: margin\n };\n },\n computed: {\n hasIcon: function hasIcon() {\n return this.icon !== '';\n },\n hasSlot: function hasSlot() {\n return !!this.$slots.default;\n },\n isValidSubtitle: function isValidSubtitle() {\n var _this$subtitle, _this$subtitle$trim;\n\n return ((_this$subtitle = this.subtitle) === null || _this$subtitle === void 0 ? void 0 : (_this$subtitle$trim = _this$subtitle.trim) === null || _this$subtitle$trim === void 0 ? void 0 : _this$subtitle$trim.call(_this$subtitle)) !== '';\n },\n isSizeBigEnough: function isSizeBigEnough() {\n return this.avatarSize >= defaultSize;\n },\n cssVars: function cssVars() {\n // Don't use margin to calculate the height if noMargin\n var margin = this.noMargin ? 0 : this.margin;\n return {\n '--height': this.avatarSize + 2 * margin + 'px',\n '--margin': this.margin + 'px'\n };\n }\n },\n beforeMount: function beforeMount() {\n // If we don't have a subtitle and if this is a user\n if (!this.isNoUser && !this.subtitle) {\n this.fetchUserStatus(this.user);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=script&lang=js&\":\n/*!********************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Multiselect/EllipsisedOption.vue?vue&type=script&lang=js& ***!\n \\********************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ \"core-js/modules/es.string.search.js\");\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Highlight__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Highlight */ \"./src/components/Highlight/index.js\");\n/* harmony import */ var _utils_FindRanges__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/FindRanges */ \"./src/utils/FindRanges.js\");\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'EllipsisedOption',\n components: {\n Highlight: _Highlight__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n },\n props: {\n option: {\n type: [String, Object],\n required: true,\n default: ''\n },\n label: {\n type: String,\n default: ''\n },\n search: {\n type: String,\n default: ''\n },\n name: {\n type: String,\n default: ''\n }\n },\n computed: {\n needsTruncate: function needsTruncate() {\n return this.name && this.name.length >= 10;\n },\n\n /**\n * Index at which to split the name if it is longer than 10 characters.\n *\n * @returns {Integer} The position at which to split\n */\n split: function split() {\n // leave maximum 10 letters\n return this.name.length - Math.min(Math.floor(this.name.length / 2), 10);\n },\n part1: function part1() {\n if (this.needsTruncate) {\n return this.name.substr(0, this.split);\n }\n\n return this.name;\n },\n part2: function part2() {\n if (this.needsTruncate) {\n return this.name.substr(this.split);\n }\n\n return '';\n },\n\n /**\n * The ranges to highlight. Since we split the string for ellipsising,\n * the Highlight component cannot figure this out itself and needs the ranges provided.\n *\n * @returns {Array} The array with the ranges to highlight\n */\n highlight1: function highlight1() {\n if (!this.search) {\n return [];\n }\n\n return Object(_utils_FindRanges__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.name, this.search);\n },\n\n /**\n * We shift the ranges for the second part by the position of the split.\n * Ranges out of the string length are discarded by the Highlight component,\n * so we don't need to take care of this here.\n *\n * @returns {Array} The array with the ranges to highlight\n */\n highlight2: function highlight2() {\n var _this = this;\n\n return this.highlight1.map(function (range) {\n return {\n start: range.start - _this.split,\n end: range.end - _this.split\n };\n });\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/Multiselect.vue?vue&type=script&lang=js&\":\n/*!***************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Multiselect/Multiselect.vue?vue&type=script&lang=js& ***!\n \\***************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ \"core-js/modules/es.array.slice.js\");\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"core-js/modules/es.symbol.js\");\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"core-js/modules/es.symbol.description.js\");\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ \"core-js/modules/es.symbol.iterator.js\");\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"core-js/modules/es.array.iterator.js\");\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"core-js/modules/es.string.iterator.js\");\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue-multiselect */ \"vue-multiselect\");\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _EllipsisedOption__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./EllipsisedOption */ \"./src/components/Multiselect/EllipsisedOption.vue\");\n/* harmony import */ var _mixins_l10n__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../mixins/l10n */ \"./src/mixins/l10n.js\");\n/* harmony import */ var _ListItemIcon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../ListItemIcon */ \"./src/components/ListItemIcon/index.js\");\n/* harmony import */ var _directives_Tooltip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../directives/Tooltip */ \"./src/directives/Tooltip/index.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Multiselect',\n components: {\n EllipsisedOption: _EllipsisedOption__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n ListItemIcon: _ListItemIcon__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n VueMultiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_11___default.a\n },\n directives: {\n tooltip: _directives_Tooltip__WEBPACK_IMPORTED_MODULE_15__[\"default\"]\n },\n mixins: [_mixins_l10n__WEBPACK_IMPORTED_MODULE_13__[\"default\"]],\n inheritAttrs: false,\n\n /**\n * Every prop that is defined here will break the auto\n * forward to the vue-multiselect component\n * You will have to specify it as a prop on the template\n */\n props: {\n // eslint-disable-next-line\n value: {\n default: function _default() {\n return [];\n }\n },\n\n /**\n * Allow multiple select ?\n */\n multiple: {\n type: Boolean,\n default: false\n },\n\n /**\n * Limit the number of results\n */\n limit: {\n type: Number,\n default: 99999\n },\n\n /**\n * key to use as label on object options\n */\n label: {\n type: String,\n default: ''\n },\n\n /**\n * key to use as id on object options\n */\n trackBy: {\n type: String,\n default: ''\n },\n\n /**\n * Array of available options: Objects, Strings or Integers.\n * If array of objects, visible label will default to option.label.\n * If `labal` prop is passed, label will equal option['label']\n */\n options: {\n type: Array,\n required: true\n },\n\n /**\n * Enable the big user selector w/ avatar\n * Make sure your objects fit the requirements\n */\n userSelect: {\n type: Boolean,\n default: false\n },\n\n /**\n * Overriding the default slot. Only showing a spiner.\n */\n loading: {\n type: Boolean,\n default: false\n },\n\n /**\n * Enable the automatic limit and width calculation\n * Only works on multiple\n */\n autoLimit: {\n type: Boolean,\n default: true\n },\n\n /**\n * If autoLimit, allow to specify the min-width of every\n * selected option when calculating the number of options\n * to show. This needs to be a positive integer.\n */\n tagWidth: {\n type: Number,\n default: 150,\n validator: function validator(value) {\n return value > 0;\n }\n }\n },\n data: function data() {\n return {\n elWidth: 0\n };\n },\n computed: {\n /**\n * Calculate the number of options to show\n * depending on the width of the select.\n * Only works if `autoLimit` is `true`\n * @returns {number}\n */\n maxOptions: function maxOptions() {\n if (this.autoLimit && this.elWidth > 0 && this.tagWidth !== 0) {\n var limit = Math.floor(this.elWidth / this.tagWidth);\n return limit > 0 ? limit : 1;\n }\n\n return this.limit ? this.limit : 9999;\n },\n\n /**\n * Make the tooltip limit string for the `autoLimit`\n * @returns {string}\n */\n limitString: function limitString() {\n return \"+\".concat(this.value.length - this.maxOptions);\n },\n localValue: {\n get: function get() {\n if (this.trackBy && this.options && _typeof(this.value) !== 'object' && this.options[this.value]) {\n return this.options[this.value];\n }\n\n return this.value;\n },\n set: function set(value) {\n this.$emit('update:value', value);\n this.$emit('change', value);\n }\n }\n },\n watch: {\n // ensure we update the width when we add or remove data\n value: function value() {\n this.updateWidth();\n }\n },\n mounted: function mounted() {\n this.updateWidth();\n window.addEventListener('resize', this.updateWidth);\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.updateWidth);\n },\n methods: {\n /**\n * Returns the option label\n *\n * @param {String} option The selected option\n * @returns {string}\n */\n getOptionLabel: function getOptionLabel(option) {\n var _this$$refs$VueMultis;\n\n return String((_this$$refs$VueMultis = this.$refs.VueMultiselect) === null || _this$$refs$VueMultis === void 0 ? void 0 : _this$$refs$VueMultis.getOptionLabel(option));\n },\n\n /**\n * Format array of groups objects to a string\n * for the limit popup using the label prop\n *\n * @param {array} options The selected options\n * @returns {string}\n */\n formatLimitTitle: function formatLimitTitle(options) {\n var _this = this;\n\n if (Array.isArray(options) && options.length > 0) {\n var selection = options;\n\n if (_typeof(options[0]) === 'object') {\n selection = options.map(function (option) {\n return option[_this.label];\n });\n }\n\n return selection.slice(this.maxOptions).join(', ');\n }\n\n return '';\n },\n\n /**\n * Update the component width data\n */\n updateWidth: function updateWidth() {\n // width of the tags wrapper minus the padding\n if (this.$el && this.$el.querySelector('.multiselect__tags-wrap')) {\n this.elWidth = this.$el.querySelector('.multiselect__tags-wrap').offsetWidth - 10;\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! v-tooltip */ \"v-tooltip\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(v_tooltip__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Popover',\n components: {\n VPopover: v_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VPopover\"]\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$watch(function () {\n // required because v-tooltip doesn't provide events\n // and @show is too early\n // see https://github.com/Akryum/v-tooltip/issues/661\n return _this.$refs.popover.isOpen;\n }, function (val) {\n if (val) {\n /**\n * Triggered after the tooltip was visually displayed.\n *\n * This is different from the 'show' and 'apply-show' which\n * run earlier than this where there is no guarantee that the\n * tooltip is already visible and in the DOM.\n */\n _this.$emit('after-show');\n } else {\n /**\n * Triggered after the tooltip was visually hidden.\n */\n _this.$emit('after-hide');\n }\n });\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=script&lang=js&\":\n/*!***************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=script&lang=js& ***!\n \\***************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PopoverMenuItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PopoverMenuItem */ \"./src/components/PopoverMenu/PopoverMenuItem.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'PopoverMenu',\n components: {\n PopoverMenuItem: _PopoverMenuItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n props: {\n menu: {\n type: Array,\n default: function _default() {\n return [{\n href: 'https://nextcloud.com',\n icon: 'icon-links',\n text: 'Nextcloud'\n }];\n },\n required: true\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"core-js/modules/es.array.iterator.js\");\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"core-js/modules/es.string.iterator.js\");\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ \"core-js/modules/web.url.js\");\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'PopoverMenuItem',\n props: {\n item: {\n type: Object,\n required: true,\n default: function _default() {\n return {\n key: 'nextcloud-link',\n href: 'https://nextcloud.com',\n icon: 'icon-links',\n text: 'Nextcloud'\n };\n },\n // check the input types\n // TODO: add more validation of types\n validator: function validator(item) {\n // TODO: support radio\n if (item.input) {\n return ['text', 'checkbox'].indexOf(item.input) !== -1;\n }\n\n return true;\n }\n }\n },\n computed: {\n // random key for inputs binding if not provided\n key: function key() {\n return this.item.key ? this.item.key : Math.round(Math.random() * 16 * 1000000).toString(16);\n },\n iconIsUrl: function iconIsUrl() {\n try {\n // eslint-disable-next-line no-new\n new URL(this.item.icon);\n return true;\n } catch (_) {\n return false;\n }\n }\n },\n methods: {\n // allow us to use both link and an action on `a`\n // we still need to make sure item.action exists\n action: function action(event) {\n if (this.item.action) {\n this.item.action(event);\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=script&lang=js&\":\n/*!*************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/RichContenteditable/MentionBubble.vue?vue&type=script&lang=js& ***!\n \\*************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ \"@nextcloud/router\");\n/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'MentionBubble',\n props: {\n id: {\n type: String,\n required: true\n },\n label: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n required: true\n },\n source: {\n type: String,\n required: true\n },\n primary: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n avatarUrl: function avatarUrl() {\n return this.id && this.source === 'users' ? this.getAvatarUrl(this.id, 44) : null;\n },\n mentionText: function mentionText() {\n return this.id.indexOf(' ') === -1 ? \"@\".concat(this.id) : \"@\\\"\".concat(this.id, \"\\\"\");\n }\n },\n methods: {\n getAvatarUrl: function getAvatarUrl(user, size) {\n return Object(_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__[\"generateUrl\"])('/avatar/{user}/{size}', {\n user: user,\n size: size\n });\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./src/components/Multiselect/index.scss\":\n/*!************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./src/components/Multiselect/index.scss ***!\n \\************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.multiselect[data-v-84c461f] {\\n margin: 0;\\n padding: 0 !important;\\n display: inline-block;\\n /* override this rule with your width styling if you need */\\n min-width: 160px;\\n position: relative;\\n background-color: var(--color-main-background);\\n /* Force single multiselect value to be shown when not active */\\n /* results wrapper */\\n /* ABOVE display */\\n /* Icon before option select */\\n /* No need for an icon here */\\n /* Mouse feedback */ }\\n .multiselect[data-v-84c461f]:not(.multiselect--active) .multiselect__single {\\n width: 100%;\\n z-index: 2 !important; }\\n .multiselect[data-v-84c461f].multiselect--active {\\n /* Opened: force display the input */\\n /* multiselect__limit hidden if active */ }\\n .multiselect[data-v-84c461f].multiselect--active input.multiselect__input {\\n opacity: 1 !important;\\n cursor: text !important;\\n border-radius: var(--border-radius) var(--border-radius) 0 0;\\n display: block !important; }\\n .multiselect[data-v-84c461f].multiselect--active .multiselect__limit {\\n display: none; }\\n .multiselect[data-v-84c461f].multiselect--active.multiselect--above input.multiselect__input {\\n border-radius: 0 0 var(--border-radius) var(--border-radius); }\\n .multiselect[data-v-84c461f].multiselect--disabled,\\n .multiselect[data-v-84c461f].multiselect--disabled .multiselect__single {\\n background-color: var(--color-background-dark) !important; }\\n .multiselect[data-v-84c461f].icon-loading-small::after {\\n left: 100%;\\n margin-left: -24px; }\\n .multiselect[data-v-84c461f] .multiselect__tags {\\n /* space between tags and limit tag */\\n display: flex;\\n flex-wrap: nowrap;\\n overflow: hidden;\\n border: 1px solid var(--color-border-dark);\\n cursor: pointer;\\n position: relative;\\n border-radius: 3px;\\n min-height: 34px;\\n height: 100%;\\n /* tag wrapper */\\n /* Single select default value\\n\\t\\tor default placeholder if search disabled*/\\n /* displayed text if tag limit reached */\\n /* default multiselect input for search and placeholder */ }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap {\\n align-items: center;\\n display: inline-flex;\\n overflow: hidden;\\n max-width: 100%;\\n position: relative;\\n padding: 3px 5px;\\n flex: 1 1;\\n flex-wrap: nowrap;\\n /* no tags or simple select? Show input directly\\n\\t\\t\\tinput is used to display single value */\\n /* selected tag */ }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input {\\n opacity: 1 !important;\\n display: block !important;\\n /* hide default empty text like .multiselect__placeholder,\\n\\t\\t\\t\\tand show input instead. It looks better without a transition between\\n\\t\\t\\t\\ta span and the input that have different styling */ }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input + span:not(.multiselect__single) {\\n display: none; }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap .multiselect__tag {\\n line-height: 20px;\\n padding: 1px 5px;\\n background-image: none;\\n color: var(--color-main-text);\\n border: 1px solid var(--color-border-dark);\\n display: inline-flex;\\n align-items: center;\\n border-radius: 3px;\\n /* require to override the default width\\n\\t\\t\\t\\tand force the tag to shring properly */\\n min-width: 0;\\n max-width: fit-content;\\n max-width: -moz-fit-content;\\n margin-bottom: 3px;\\n /* css hack, detect if more than two tags\\n\\t\\t\\t\\tif so, flex-basis is set to half */\\n /* ellipsis the groups to be sure\\n\\t\\t\\t\\twe display at least two of them */ }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child {\\n flex: 0 1 auto; }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child) {\\n margin-right: 5px; }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__tags-wrap .multiselect__tag > span {\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden; }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__single,\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__placeholder {\\n padding: 7px 6px;\\n flex: 0 0 100%;\\n z-index: 1;\\n /* above input */\\n background-color: var(--color-main-background);\\n line-height: 18px;\\n color: var(--color-text-lighter);\\n display: flex;\\n align-items: center; }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__single, .multiselect[data-v-84c461f] .multiselect__tags .multiselect__single *,\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__placeholder,\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__placeholder * {\\n cursor: pointer; }\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__strong,\\n .multiselect[data-v-84c461f] .multiselect__tags .multiselect__limit {\\n line-height: 20px;\\n color: var(--color-text-lighter);\\n display: inline-flex;\\n align-items: center;\\n opacity: 0.7;\\n margin-right: 5px;\\n /* above the input */\\n z-index: 5; }\\n .multiselect[data-v-84c461f] .multiselect__tags input.multiselect__input {\\n width: 100% !important;\\n position: relative !important;\\n margin: 0;\\n opacity: 0;\\n /* let's leave it on top of tags but hide it */\\n height: 100% !important;\\n border: none;\\n /* override hide to force show the placeholder */\\n /* only when not active */\\n cursor: pointer;\\n /* override inline styling of the lib */\\n padding: 7px 6px !important;\\n display: none; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper {\\n position: absolute;\\n width: 100%;\\n margin-top: -1px;\\n border: 1px solid var(--color-border-dark);\\n background: var(--color-main-background);\\n z-index: 50;\\n max-height: 250px;\\n overflow-y: auto;\\n border-radius: 0 0 var(--border-radius) var(--border-radius); }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper .multiselect__content {\\n width: 100%;\\n padding: 0; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li {\\n position: relative;\\n display: flex;\\n align-items: center;\\n background-color: transparent; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li,\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li span {\\n cursor: pointer; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span {\\n padding: 8px;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n margin: 0;\\n height: auto;\\n min-height: 1em;\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n display: inline-flex;\\n align-items: center;\\n background-color: transparent;\\n color: var(--color-text-lighter);\\n width: 100%;\\n /* selected checkmark icon */ }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span::before {\\n content: ' ';\\n background-repeat: no-repeat;\\n background-position: center;\\n min-width: 16px;\\n min-height: 16px;\\n display: block;\\n opacity: 0.5;\\n margin-right: 5px;\\n visibility: hidden; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span.multiselect__option--disabled {\\n background-color: var(--color-background-dark);\\n opacity: 0.5; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span.multiselect__option--highlight {\\n color: var(--color-main-text);\\n background-color: var(--color-background-dark); }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span:not(.multiselect__option--disabled):hover::before {\\n opacity: .3; }\\n .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span.multiselect__option--selected::before, .multiselect[data-v-84c461f] .multiselect__content-wrapper li > span:not(.multiselect__option--disabled):hover::before {\\n visibility: visible; }\\n .multiselect[data-v-84c461f].multiselect--above .multiselect__content-wrapper {\\n bottom: 100%;\\n margin-bottom: -1px; }\\n .multiselect[data-v-84c461f].multiselect--multiple .multiselect__tags {\\n flex-wrap: wrap; }\\n .multiselect[data-v-84c461f].multiselect--multiple .multiselect__content-wrapper li > span {\\n /* add the prop tag-placeholder=\\\"create\\\" to add the +\\n\\t\\t\\ticon on top of an unknown-and-ready-to-be-created entry */ }\\n .multiselect[data-v-84c461f].multiselect--multiple .multiselect__content-wrapper li > span::before {\\n background-image: var(--icon-checkmark-000); }\\n .multiselect[data-v-84c461f].multiselect--multiple .multiselect__content-wrapper li > span[data-select='create']::before {\\n background-image: var(--icon-add-000);\\n visibility: visible; }\\n .multiselect[data-v-84c461f].multiselect--single .multiselect__content-wrapper li > span::before {\\n display: none; }\\n .multiselect[data-v-84c461f]:hover .multiselect__placeholder,\\n .multiselect[data-v-84c461f] input.multiselect__input .multiselect__placeholder {\\n color: var(--color-main-text); }\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./index.scss\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n// scoping is not working inside the Multiselect.vue component\\n// as the nested properties are not inside it\\n// Therefore we need to use an external scoping\\n.multiselect[data-v-#{$scope_version}] {\\n\\tmargin: 0;\\n\\tpadding: 0 !important;\\n\\tdisplay: inline-block;\\n\\t/* override this rule with your width styling if you need */\\n\\tmin-width: 160px;\\n\\tposition: relative;\\n\\tbackground-color: var(--color-main-background);\\n\\n\\t/* Force single multiselect value to be shown when not active */\\n\\t&:not(.multiselect--active) .multiselect__single {\\n\\t\\twidth: 100%;\\n\\t\\tz-index: 2 !important;\\n\\t}\\n\\n\\t// active state, force the input to be shown, we don't want\\n\\t// the placeholder or the currently selected options\\n\\t&.multiselect--active {\\n\\t\\t/* Opened: force display the input */\\n\\t\\tinput.multiselect__input {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t\\tcursor: text !important;\\n\\t\\t\\t// remove border radius on bottom opening\\n\\t\\t\\tborder-radius: var(--border-radius) var(--border-radius) 0 0;\\n\\t\\t\\tdisplay: block !important;\\n\\t\\t}\\n\\n\\t\\t/* multiselect__limit hidden if active */\\n\\t\\t.multiselect__limit {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t// Remove radius on top opening\\n\\t&.multiselect--active.multiselect--above {\\n\\t\\tinput.multiselect__input {\\n\\t\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\t}\\n\\t}\\n\\n\\t// disabled state background\\n\\t&.multiselect--disabled,\\n\\t&.multiselect--disabled .multiselect__single {\\n\\t\\tbackground-color: var(--color-background-dark) !important;\\n\\t}\\n\\n\\t// loading state\\n\\t&.icon-loading-small::after {\\n\\t\\tleft: 100%;\\n\\t\\tmargin-left: -24px;\\n\\t}\\n\\n\\t// multiple selected options display\\n\\t.multiselect__tags {\\n\\t\\t/* space between tags and limit tag */\\n\\t\\t$space-between: 5px;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tcursor: pointer;\\n\\t\\tposition: relative;\\n\\t\\tborder-radius: 3px;\\n\\t\\tmin-height: 34px;\\n\\t\\theight: 100%;\\n\\n\\t\\t/* tag wrapper */\\n\\t\\t.multiselect__tags-wrap {\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tpadding: 3px $space-between;\\n\\t\\t\\tflex: 1 1;\\n\\t\\t\\tflex-wrap: nowrap;\\n\\t\\t\\t/* no tags or simple select? Show input directly\\n\\t\\t\\tinput is used to display single value */\\n\\t\\t\\t&:empty ~ input.multiselect__input {\\n\\t\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t\\t/* hide default empty text like .multiselect__placeholder,\\n\\t\\t\\t\\tand show input instead. It looks better without a transition between\\n\\t\\t\\t\\ta span and the input that have different styling */\\n\\t\\t\\t\\t+ span:not(.multiselect__single) {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t/* selected tag */\\n\\t\\t\\t.multiselect__tag {\\n\\t\\t\\t\\tline-height: 20px;\\n\\t\\t\\t\\tpadding: 1px 5px;\\n\\t\\t\\t\\tbackground-image: none;\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\t\\t/* require to override the default width\\n\\t\\t\\t\\tand force the tag to shring properly */\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmax-width: fit-content;\\n\\t\\t\\t\\tmax-width: -moz-fit-content;\\n\\t\\t\\t\\tmargin-bottom: 3px;\\n\\t\\t\\t\\t/* css hack, detect if more than two tags\\n\\t\\t\\t\\tif so, flex-basis is set to half */\\n\\t\\t\\t\\t&:only-child {\\n\\t\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-right: $space-between;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t/* ellipsis the groups to be sure\\n\\t\\t\\t\\twe display at least two of them */\\n\\t\\t\\t\\t> span {\\n\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Single select default value\\n\\t\\tor default placeholder if search disabled*/\\n\\t\\t.multiselect__single,\\n\\t\\t.multiselect__placeholder {\\n\\t\\t\\tpadding: 7px 6px; // like the input\\n\\t\\t\\tflex: 0 0 100%;\\n\\t\\t\\tz-index: 1; /* above input */\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tline-height: 18px; // 32px - 2*6px (padding) - 2*1px (border)\\n\\t\\t\\tcolor: var(--color-text-lighter); // like the input\\n\\t\\t\\t// Align content and make the flow smoother\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Anything inside will trigger the select opening\\n\\t\\t\\t&, * {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* displayed text if tag limit reached */\\n\\t\\t.multiselect__strong,\\n\\t\\t.multiselect__limit {\\n\\t\\t\\tline-height: 20px;\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\topacity: $opacity_normal;\\n\\t\\t\\tmargin-right: $space-between;\\n\\t\\t\\t/* above the input */\\n\\t\\t\\tz-index: 5;\\n\\t\\t}\\n\\t\\t/* default multiselect input for search and placeholder */\\n\\t\\tinput.multiselect__input {\\n\\t\\t\\twidth: 100% !important;\\n\\t\\t\\tposition: relative !important;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\topacity: 0;\\n\\t\\t\\t/* let's leave it on top of tags but hide it */\\n\\t\\t\\theight: 100% !important;\\n\\t\\t\\tborder: none;\\n\\t\\t\\t/* override hide to force show the placeholder */\\n\\t\\t\\t/* only when not active */\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\t/* override inline styling of the lib */\\n\\t\\t\\tpadding: 7px 6px !important;\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t/* results wrapper */\\n\\t.multiselect__content-wrapper {\\n\\t\\tposition: absolute;\\n\\t\\twidth: 100%;\\n\\t\\tmargin-top: -1px;\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tz-index: 50;\\n\\t\\tmax-height: 250px;\\n\\t\\toverflow-y: auto;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\t.multiselect__content {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t\\tli {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t&,\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\t\\t\\t> span {\\n\\t\\t\\t\\tpadding: 8px;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\theight: auto;\\n\\t\\t\\t\\tmin-height: 1em;\\n\\t\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\t\\tuser-select: none;\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t/* selected checkmark icon */\\n\\t\\t\\t\\t&::before {\\n\\t\\t\\t\\t\\tcontent: ' ';\\n\\t\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\t\\tmin-width: 16px;\\n\\t\\t\\t\\t\\tmin-height: 16px;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\topacity: $opacity_disabled;\\n\\t\\t\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\t\\t\\tvisibility: hidden;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&.multiselect__option--disabled {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t\\topacity: $opacity_disabled;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&.multiselect__option--highlight {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:not(.multiselect__option--disabled):hover::before {\\n\\t\\t\\t\\t\\topacity: .3;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&.multiselect__option--selected,\\n\\t\\t\\t\\t&:not(.multiselect__option--disabled):hover {\\n\\t\\t\\t\\t\\t&::before {\\n\\t\\t\\t\\t\\t\\tvisibility: visible;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t/* ABOVE display */\\n\\t&.multiselect--above .multiselect__content-wrapper {\\n\\t\\tbottom: 100%;\\n\\t\\tmargin-bottom: -1px;\\n\\t}\\n\\n\\t/* Icon before option select */\\n\\t&.multiselect--multiple {\\n\\t\\t// push the input after the tag list\\n\\t\\t.multiselect__tags {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t}\\n\\n\\t\\t.multiselect__content-wrapper li > span {\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tbackground-image: var(--icon-checkmark-000);\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* add the prop tag-placeholder=\\\"create\\\" to add the +\\n\\t\\t\\ticon on top of an unknown-and-ready-to-be-created entry */\\n\\t\\t\\t&[data-select='create'] {\\n\\t\\t\\t\\t&::before {\\n\\t\\t\\t\\t\\tbackground-image: var(--icon-add-000);\\n\\t\\t\\t\\t\\tvisibility: visible;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* No need for an icon here */\\n\\t&.multiselect--single .multiselect__content-wrapper li > span::before {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t/* Mouse feedback */\\n\\t&:hover,\\n\\tinput.multiselect__input {\\n\\t\\t.multiselect__placeholder {\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./src/directives/Tooltip/index.scss\":\n/*!********************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./src/directives/Tooltip/index.scss ***!\n \\********************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n.vue-tooltip[data-v-84c461f] {\\n position: absolute;\\n z-index: 100000;\\n right: auto;\\n left: auto;\\n display: block;\\n margin: 0;\\n /* default to top */\\n margin-top: -3px;\\n padding: 10px 0;\\n text-align: left;\\n text-align: start;\\n opacity: 0;\\n line-height: 1.6;\\n line-break: auto;\\n filter: drop-shadow(0 1px 10px var(--color-box-shadow)); }\\n .vue-tooltip[data-v-84c461f][x-placement^='top'] .tooltip-arrow {\\n bottom: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 10px 10px 0 10px;\\n border-right-color: transparent;\\n border-bottom-color: transparent;\\n border-left-color: transparent; }\\n .vue-tooltip[data-v-84c461f][x-placement^='bottom'] .tooltip-arrow {\\n top: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 0 10px 10px 10px;\\n border-top-color: transparent;\\n border-right-color: transparent;\\n border-left-color: transparent; }\\n .vue-tooltip[data-v-84c461f][x-placement^='right'] .tooltip-arrow {\\n right: 100%;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 10px 10px 0;\\n border-top-color: transparent;\\n border-bottom-color: transparent;\\n border-left-color: transparent; }\\n .vue-tooltip[data-v-84c461f][x-placement^='left'] .tooltip-arrow {\\n left: 100%;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 0 10px 10px;\\n border-top-color: transparent;\\n border-right-color: transparent;\\n border-bottom-color: transparent; }\\n .vue-tooltip[data-v-84c461f][aria-hidden='true'] {\\n visibility: hidden;\\n transition: opacity .15s, visibility .15s;\\n opacity: 0; }\\n .vue-tooltip[data-v-84c461f][aria-hidden='false'] {\\n visibility: visible;\\n transition: opacity .15s;\\n opacity: 1; }\\n .vue-tooltip[data-v-84c461f] .tooltip-inner {\\n max-width: 350px;\\n padding: 5px 8px;\\n text-align: center;\\n color: var(--color-main-text);\\n border-radius: var(--border-radius);\\n background-color: var(--color-main-background); }\\n .vue-tooltip[data-v-84c461f] .tooltip-arrow {\\n position: absolute;\\n z-index: 1;\\n width: 0;\\n height: 0;\\n margin: 0;\\n border-style: solid;\\n border-color: var(--color-main-background); }\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./index.scss\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AApBF;;;;;;;;;;CA+BC;AAjBD;EACC,kBAAkB;EAClB,eAAe;EACf,WAAW;EACX,UAAU;EACV,cAAc;EACd,SAAS;EACT,mBAAA;EACA,gBAAgB;EAChB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,UAAU;EACV,gBAAgB;EAEhB,gBAAgB;EAChB,uDAAuD,EAAA;EAhBxD;IAqBG,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,8BA1Be;IA2Bf,+BAA+B;IAC/B,gCAAgC;IAChC,8BAA8B,EAAA;EA3BjC;IAkCG,MAAM;IACN,aAAa;IACb,gBAAgB;IAChB,8BAvCe;IAwCf,6BAA6B;IAC7B,+BAA+B;IAC/B,8BAA8B,EAAA;EAxCjC;IA+CG,WAAW;IACX,eAAe;IACf,cAAc;IACd,8BAAsD;IACtD,6BAA6B;IAC7B,gCAAgC;IAChC,8BAA8B,EAAA;EArDjC;IA4DG,UAAU;IACV,eAAe;IACf,cAAc;IACd,8BAjEe;IAkEf,6BAA6B;IAC7B,+BAA+B;IAC/B,gCAAgC,EAAA;EAlEnC;IAwEE,kBAAkB;IAClB,yCAAyC;IACzC,UAAU,EAAA;EA1EZ;IA6EE,mBAAmB;IACnB,wBAAwB;IACxB,UAAU,EAAA;EA/EZ;IAoFE,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,6BAA6B;IAC7B,mCAAmC;IACnC,8CAA8C,EAAA;EAzFhD;IA8FE,kBAAkB;IAClB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,mBAAmB;IACnB,0CAA0C,EAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n\\n$arrow-width: 10px;\\n\\n.vue-tooltip[data-v-#{$scope_version}] {\\n\\tposition: absolute;\\n\\tz-index: 100000;\\n\\tright: auto;\\n\\tleft: auto;\\n\\tdisplay: block;\\n\\tmargin: 0;\\n\\t/* default to top */\\n\\tmargin-top: -3px;\\n\\tpadding: 10px 0;\\n\\ttext-align: left;\\n\\ttext-align: start;\\n\\topacity: 0;\\n\\tline-height: 1.6;\\n\\n\\tline-break: auto;\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t// TOP\\n\\t&[x-placement^='top'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// BOTTOM\\n\\t&[x-placement^='bottom'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// RIGHT\\n\\t&[x-placement^='right'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tright: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// LEFT\\n\\t&[x-placement^='left'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tleft: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// HIDDEN / SHOWN\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity .15s, visibility .15s;\\n\\t\\topacity: 0;\\n\\t}\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity .15s;\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t// CONTENT\\n\\t.tooltip-inner {\\n\\t\\tmax-width: 350px;\\n\\t\\tpadding: 5px 8px;\\n\\t\\ttext-align: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t// ARROW\\n\\t.tooltip-arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss&\":\n/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss& ***!\n \\****************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.eot */ \"./src/fonts/iconfont-vue-84c461f.eot\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.woff */ \"./src/fonts/iconfont-vue-84c461f.woff\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.ttf */ \"./src/fonts/iconfont-vue-84c461f.ttf\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.svg */ \"./src/fonts/iconfont-vue-84c461f.svg\");\n// Imports\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n@font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n /* IE9 Compat Modes */\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\");\\n /* Legacy iOS */\\n}\\n.icon[data-v-100e3b6f] {\\n font-style: normal;\\n font-weight: 400;\\n}\\n.icon.arrow-left-double[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-left[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right-double[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.breadcrumb[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.checkmark[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.close[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.confirm[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.info[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.menu[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.more[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.pause[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.play[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.triangle-s[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-away[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-dnd[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-invisible[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-online[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.avatardiv[data-v-100e3b6f] {\\n position: relative;\\n display: inline-block;\\n}\\n.avatardiv--unknown[data-v-100e3b6f] {\\n position: relative;\\n background-color: var(--color-text-maxcontrast);\\n}\\n.avatardiv[data-v-100e3b6f]:not(.avatardiv--unknown) {\\n background-color: #fff !important;\\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\\n}\\nbody.theme--dark .avatardiv[data-v-100e3b6f]:not(.avatardiv--unknown) {\\n background-color: #000 !important;\\n}\\n.avatardiv--with-menu[data-v-100e3b6f] {\\n cursor: pointer;\\n}\\n.avatardiv--with-menu[data-v-100e3b6f] .trigger {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n.avatardiv--with-menu .icon-more[data-v-100e3b6f] {\\n display: flex;\\n cursor: pointer;\\n opacity: 0;\\n background: none;\\n font-size: 18px;\\n align-items: center;\\n justify-content: center;\\n}\\n.avatardiv--with-menu .icon-more[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.avatardiv--with-menu .icon-more[data-v-100e3b6f]::before {\\n display: block;\\n}\\n.avatardiv--with-menu:focus .icon-more[data-v-100e3b6f], .avatardiv--with-menu:hover .icon-more[data-v-100e3b6f] {\\n opacity: 1;\\n}\\n.avatardiv--with-menu:focus img[data-v-100e3b6f], .avatardiv--with-menu:hover img[data-v-100e3b6f] {\\n opacity: 0.3;\\n}\\n.avatardiv--with-menu .icon-more[data-v-100e3b6f],\\n .avatardiv--with-menu img[data-v-100e3b6f] {\\n transition: opacity var(--animation-quick);\\n}\\n.avatardiv > .unknown[data-v-100e3b6f] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: block;\\n width: 100%;\\n text-align: center;\\n font-weight: normal;\\n color: var(--color-main-background);\\n}\\n.avatardiv img[data-v-100e3b6f] {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n.avatardiv .avatardiv__status[data-v-100e3b6f] {\\n position: absolute;\\n top: 22px;\\n left: 22px;\\n width: 10px;\\n height: 10px;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n background-clip: content-box;\\n}\\n.avatardiv .avatardiv__status--positive[data-v-100e3b6f] {\\n border-radius: 50%;\\n background-color: var(--color-success);\\n}\\n.avatardiv .avatardiv__status--negative[data-v-100e3b6f] {\\n background-color: var(--color-error);\\n}\\n.avatardiv .avatardiv__status--neutral[data-v-100e3b6f] {\\n border: none;\\n background-color: transparent !important;\\n}\\n.avatardiv .avatardiv__status--neutral svg[data-v-100e3b6f] {\\n position: absolute;\\n top: -3px;\\n left: -2px;\\n}\\n.avatardiv .avatardiv__status--neutral svg path[data-v-100e3b6f] {\\n fill: #aaa;\\n}\\n.avatardiv .avatardiv__user-status[data-v-100e3b6f] {\\n position: absolute;\\n right: -4px;\\n bottom: -4px;\\n height: 18px;\\n width: 18px;\\n line-height: 15px;\\n font-size: var(--default-font-size);\\n border: 2px solid var(--color-main-background);\\n background-color: var(--color-main-background);\\n border-radius: 50%;\\n}\\n.acli:hover .avatardiv .avatardiv__user-status[data-v-100e3b6f] {\\n border-color: var(--color-background-hover);\\n background-color: var(--color-background-hover);\\n}\\n.acli.active .avatardiv .avatardiv__user-status[data-v-100e3b6f] {\\n border-color: var(--color-primary-light);\\n background-color: var(--color-primary-light);\\n}\\n.avatardiv .avatardiv__user-status--online[data-v-100e3b6f] {\\n color: #49b382;\\n}\\n.avatardiv .avatardiv__user-status--online[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.avatardiv .avatardiv__user-status--dnd[data-v-100e3b6f] {\\n background-color: #ffffff;\\n color: #ed484c;\\n}\\n.avatardiv .avatardiv__user-status--dnd[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.avatardiv .avatardiv__user-status--away[data-v-100e3b6f] {\\n color: #f4a331;\\n}\\n.avatardiv .avatardiv__user-status--away[data-v-100e3b6f]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.avatardiv .avatardiv__user-status--icon[data-v-100e3b6f] {\\n border: none;\\n background-color: transparent;\\n}\\n.avatardiv .popovermenu-wrapper[data-v-100e3b6f] {\\n position: relative;\\n display: inline-block;\\n}\\n.avatar-class-icon[data-v-100e3b6f] {\\n border-radius: 50%;\\n background-color: var(--color-background-darker);\\n height: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Avatar.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../fonts/scss/iconfont-vue.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../fonts/scss/iconfont-vue';\\n\\n.avatardiv {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\n\\t&--unknown {\\n\\t\\tposition: relative;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&:not(&--unknown) {\\n\\t\\t// White background for avatars with transparency\\n\\t\\tbackground-color: #fff !important;\\n\\t\\tbody.theme--dark & {\\n\\t\\t\\t// And black background in dark mode, as it shines through on hover of the menu\\n\\t\\t\\tbackground-color: #000 !important;\\n\\t\\t}\\n\\t\\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\\n\\t}\\n\\n\\t&--with-menu {\\n\\t\\tcursor: pointer;\\n\\t\\t::v-deep .trigger {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t}\\n\\t\\t.icon-more {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\topacity: 0;\\n\\t\\t\\tbackground: none;\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t@include iconfont('more');\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\t.icon-more {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t\\timg {\\n\\t\\t\\t\\topacity: 0.3;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.icon-more,\\n\\t\\timg {\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t}\\n\\t}\\n\\n\\t> .unknown {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal;\\n\\t\\tcolor: var(--color-main-background);\\n\\t}\\n\\n\\timg {\\n\\t\\t// Cover entire area\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\t// Keep ratio\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t.avatardiv__status {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 22px;\\n\\t\\tleft: 22px;\\n\\t\\twidth: 10px;\\n\\t\\theight: 10px;\\n\\t\\tborder: 1px solid rgba(255, 255, 255, .5);\\n\\t\\tbackground-clip: content-box;\\n\\t\\t&--positive {\\n\\t\\t\\tborder-radius: 50%;\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t\\t&--negative {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\n\\t\\t&--neutral {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: -3px;\\n\\t\\t\\t\\tleft: -2px;\\n\\t\\t\\t\\tpath {\\n\\t\\t\\t\\t\\tfill: #aaa;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.avatardiv__user-status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\theight: 18px;\\n\\t\\twidth: 18px;\\n\\t\\tline-height: 15px;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tborder-radius: 50%;\\n\\n\\t\\t.acli:hover & {\\n\\t\\t\\tborder-color: var(--color-background-hover);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t\\t.acli.active & {\\n\\t\\t\\tborder-color: var(--color-primary-light);\\n\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t}\\n\\n\\t\\t&--online{\\n\\t\\t\\t@include iconfont('user-status-online');\\n\\t\\t\\tcolor: #49b382;\\n\\t\\t}\\n\\t\\t&--dnd{\\n\\t\\t\\t@include iconfont('user-status-dnd');\\n\\t\\t\\tbackground-color: #ffffff;\\n\\t\\t\\tcolor: #ed484c;\\n\\t\\t}\\n\\t\\t&--away{\\n\\t\\t\\t@include iconfont('user-status-away');\\n\\t\\t\\tcolor: #f4a331;\\n\\t\\t}\\n\\t\\t&--icon {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t.popovermenu-wrapper {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n\\n.avatar-class-icon {\\n\\tborder-radius: 50%;\\n\\tbackground-color: var(--color-background-darker);\\n\\theight: 100%;\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (\\n\\t\\\"iconfont-vue-84c461f\\\": (\\n\\t\\t\\\"arrow-left-double\\\": \\\"\\\\ea01\\\",\\n\\t\\t\\\"arrow-left\\\": \\\"\\\\ea02\\\",\\n\\t\\t\\\"arrow-right-double\\\": \\\"\\\\ea03\\\",\\n\\t\\t\\\"arrow-right\\\": \\\"\\\\ea04\\\",\\n\\t\\t\\\"breadcrumb\\\": \\\"\\\\ea05\\\",\\n\\t\\t\\\"checkmark\\\": \\\"\\\\ea06\\\",\\n\\t\\t\\\"close\\\": \\\"\\\\ea07\\\",\\n\\t\\t\\\"confirm\\\": \\\"\\\\ea08\\\",\\n\\t\\t\\\"info\\\": \\\"\\\\ea09\\\",\\n\\t\\t\\\"menu\\\": \\\"\\\\ea0a\\\",\\n\\t\\t\\\"more\\\": \\\"\\\\ea0b\\\",\\n\\t\\t\\\"pause\\\": \\\"\\\\ea0c\\\",\\n\\t\\t\\\"play\\\": \\\"\\\\ea0d\\\",\\n\\t\\t\\\"triangle-s\\\": \\\"\\\\ea0e\\\",\\n\\t\\t\\\"user-status-away\\\": \\\"\\\\ea0f\\\",\\n\\t\\t\\\"user-status-dnd\\\": \\\"\\\\ea10\\\",\\n\\t\\t\\\"user-status-invisible\\\": \\\"\\\\ea11\\\",\\n\\t\\t\\\"user-status-online\\\": \\\"\\\\ea12\\\"\\n\\t)\\n));\\n\\n\\n$create-font-face: true !default; // should the @font-face tag get created?\\n\\n// should there be a custom class for each icon? will be .filename\\n$create-icon-classes: true !default; \\n\\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\\n// for each icon\\n$icon-common-class: 'icon' !default;\\n\\n// if you whish to prefix your filenames, here you can do so.\\n// if this string stays empty, your classes will use the filename, for example\\n// an icon called star.svg will result in a class called .star\\n// if you use the prefix to be 'icon-' it would result in .icon-star\\n$icon-prefix: '' !default; \\n\\n// helper function to get the correct font group\\n@function iconfont-group($group: null) {\\n @if (null == $group) {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n @if (false == map-has-key($__iconfont__data, $group)) {\\n @warn 'Undefined Iconfont Family!';\\n @return ();\\n }\\n @return map-get($__iconfont__data, $group);\\n}\\n\\n// helper function to get the correct icon of a group\\n@function iconfont-item($name) {\\n $slash: str-index($name, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($name, 0, $slash - 1);\\n $name: str-slice($name, $slash + 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n $group: iconfont-group($group);\\n @if (false == map-has-key($group, $name)) {\\n @warn 'Undefined Iconfont Glyph!';\\n @return '';\\n }\\n @return map-get($group, $name);\\n}\\n\\n// complete mixing to include the icon\\n// usage:\\n// .my_icon{ @include iconfont('star') }\\n@mixin iconfont($icon) {\\n $slash: str-index($icon, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($icon, 0, $slash - 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n &:before {\\n font-family: $group;\\n font-style: normal;\\n font-weight: 400;\\n content: iconfont-item($icon);\\n }\\n}\\n\\n// creates the font face tag if the variable is set to true (default)\\n@if $create-font-face == true {\\n @font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url('../iconfont-vue-84c461f.eot'); /* IE9 Compat Modes */\\n src: url('../iconfont-vue-84c461f.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\\n url('../iconfont-vue-84c461f.woff') format('woff'), /* Pretty Modern Browsers */\\n url('../iconfont-vue-84c461f.ttf') format('truetype'), /* Safari, Android, iOS */\\n url('../iconfont-vue-84c461f.svg') format('svg'); /* Legacy iOS */\\n }\\n}\\n\\n// creates icon classes for each individual loaded svg (default)\\n@if $create-icon-classes == true {\\n .#{$icon-common-class} {\\n font-style: normal;\\n font-weight: 400;\\n\\n @each $icon, $content in map-get($__iconfont__data, \\\"iconfont-vue-84c461f\\\") {\\n &.#{$icon-prefix}#{$icon}:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: iconfont-item(\\\"iconfont-vue-84c461f/#{$icon}\\\");\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true&\":\n/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true& ***!\n \\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.option[data-v-7fe95a8f] {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n height: var(--height);\\n}\\n.option__avatar[data-v-7fe95a8f] {\\n margin-right: var(--margin);\\n}\\n.option__details[data-v-7fe95a8f] {\\n display: flex;\\n flex: 1 1;\\n flex-direction: column;\\n justify-content: center;\\n min-width: 0;\\n}\\n.option__lineone[data-v-7fe95a8f] {\\n color: var(--color-text-light);\\n}\\n.option__linetwo[data-v-7fe95a8f] {\\n opacity: 0.7;\\n}\\n.option__lineone[data-v-7fe95a8f], .option__linetwo[data-v-7fe95a8f] {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n line-height: 1.1em;\\n}\\n.option__lineone strong[data-v-7fe95a8f], .option__linetwo strong[data-v-7fe95a8f] {\\n font-weight: bold;\\n}\\n.option__icon[data-v-7fe95a8f] {\\n flex: 0 0 44px;\\n width: 44px;\\n height: 44px;\\n opacity: 0.5;\\n background-position: center;\\n background-size: 16px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./ListItemIcon.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AAmNF;EACC,aAAa;EACb,mBAAmB;EACnB,WAAW;EACX,qBAAqB;AAAA;AAErB;IACC,2BAA2B;AAAA;AAG5B;IACC,aAAa;IACb,SAAS;IACT,sBAAsB;IACtB,uBAAuB;IACvB,YAAY;AAAA;AAGb;IACC,8BAA8B;AAAA;AAE/B;IACC,YCnNiB;AAAA;ADqNlB;IAEC,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;AAAA;AALlB;MAOC,iBAAiB;AAAA;AAInB;IACC,cCnPmB;IDoPnB,WCpPmB;IDqPnB,YCrPmB;IDsPnB,YCrOmB;IDsOnB,2BAA2B;IAC3B,qBAAqB;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.option {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\twidth: 100%;\\n\\theight: var(--height);\\n\\n\\t&__avatar {\\n\\t\\tmargin-right: var(--margin);\\n\\t}\\n\\n\\t&__details {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t}\\n\\n\\t&__lineone {\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n\\t&__linetwo {\\n\\t\\topacity: $opacity_normal;\\n\\t}\\n\\t&__lineone,\\n\\t&__linetwo {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tline-height: 1.1em;\\n\\t\\tstrong {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: 16px;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true&\":\n/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true& ***!\n \\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.name-parts[data-v-026c3def] {\\n display: flex;\\n max-width: 100%;\\n}\\n.name-parts__first[data-v-026c3def] {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.name-parts__first[data-v-026c3def], .name-parts__last[data-v-026c3def] {\\n white-space: pre;\\n}\\n.name-parts__first strong[data-v-026c3def], .name-parts__last strong[data-v-026c3def] {\\n font-weight: bold;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./EllipsisedOption.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AAwGF;EACC,aAAa;EACb,eAAe;AAAA;AACf;IACC,gBAAgB;IAChB,uBAAuB;AAAA;AAExB;IAGC,gBAAgB;AAAA;AAHhB;MAKC,iBAAiB;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.name-parts {\\n\\tdisplay: flex;\\n\\tmax-width: 100%;\\n\\t&__first {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t&__first,\\n\\t&__last {\\n\\t\\t// prevent whitespace from being trimmed\\n\\t\\twhite-space: pre;\\n\\t\\tstrong {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.popover {\\n z-index: 100000;\\n display: block !important;\\n filter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n}\\n.popover__inner {\\n padding: 0;\\n color: var(--color-main-text);\\n border-radius: var(--border-radius);\\n background: var(--color-main-background);\\n}\\n.popover__arrow {\\n position: absolute;\\n z-index: 1;\\n width: 0;\\n height: 0;\\n margin: 10px;\\n border-style: solid;\\n border-color: var(--color-main-background);\\n}\\n.popover[x-placement^='top'] {\\n margin-bottom: 10px;\\n}\\n.popover[x-placement^='top'] .popover__arrow {\\n bottom: -10px;\\n left: calc(50% - $arrow-width);\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 10px 10px 0 10px;\\n border-right-color: transparent !important;\\n border-bottom-color: transparent !important;\\n border-left-color: transparent !important;\\n}\\n.popover[x-placement^='bottom'] {\\n margin-top: 10px;\\n}\\n.popover[x-placement^='bottom'] .popover__arrow {\\n top: -10px;\\n left: calc(50% - $arrow-width);\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 0 10px 10px 10px;\\n border-top-color: transparent !important;\\n border-right-color: transparent !important;\\n border-left-color: transparent !important;\\n}\\n.popover[x-placement^='right'] {\\n margin-left: 10px;\\n}\\n.popover[x-placement^='right'] .popover__arrow {\\n top: calc(50% - $arrow-width);\\n left: -10px;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 10px 10px 0;\\n border-top-color: transparent !important;\\n border-bottom-color: transparent !important;\\n border-left-color: transparent !important;\\n}\\n.popover[x-placement^='left'] {\\n margin-right: 10px;\\n}\\n.popover[x-placement^='left'] .popover__arrow {\\n top: calc(50% - $arrow-width);\\n right: -10px;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 0 10px 10px;\\n border-top-color: transparent !important;\\n border-right-color: transparent !important;\\n border-bottom-color: transparent !important;\\n}\\n.popover[aria-hidden='true'] {\\n visibility: hidden;\\n transition: opacity var(--animation-quick), visibility var(--animation-quick);\\n opacity: 0;\\n}\\n.popover[aria-hidden='false'] {\\n visibility: visible;\\n transition: opacity var(--animation-quick);\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Popover.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AA2FF;EACC,eAAe;EACf,yBAAyB;EAEzB,uDAAuD;AAAA;AAEvD;IACC,UAAU;IACV,6BAA6B;IAC7B,mCAAmC;IACnC,wCAAwC;AAAA;AAGzC;IACC,kBAAkB;IAClB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,YApBgB;IAqBhB,mBAAmB;IACnB,0CAA0C;AAAA;AApB5C;IAwBE,mBA1BgB;AAAA;AAElB;MA2BG,aA7Be;MA8Bf,8BAA8B;MAC9B,aAAa;MACb,gBAAgB;MAChB,8BAjCe;MAkCf,0CAA0C;MAC1C,2CAA2C;MAC3C,yCAAyC;AAAA;AAlC5C;IAuCE,gBAzCgB;AAAA;AAElB;MA0CG,UA5Ce;MA6Cf,8BAA8B;MAC9B,aAAa;MACb,gBAAgB;MAChB,8BAhDe;MAiDf,wCAAwC;MACxC,0CAA0C;MAC1C,yCAAyC;AAAA;AAjD5C;IAsDE,iBAxDgB;AAAA;AAElB;MAyDG,6BAA6B;MAC7B,WA5De;MA6Df,eAAe;MACf,cAAc;MACd,8BAAsD;MACtD,wCAAwC;MACxC,2CAA2C;MAC3C,yCAAyC;AAAA;AAhE5C;IAqEE,kBAvEgB;AAAA;AAElB;MAwEG,6BAA6B;MAC7B,YA3Ee;MA4Ef,eAAe;MACf,cAAc;MACd,8BA9Ee;MA+Ef,wCAAwC;MACxC,0CAA0C;MAC1C,2CAA2C;AAAA;AA/E9C;IAoFE,kBAAkB;IAClB,6EAA6E;IAC7E,UAAU;AAAA;AAtFZ;IA0FE,mBAAmB;IACnB,0CAA0C;IAC1C,UAAU;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$arrow-width: 10px;\\n\\n.popover {\\n\\tz-index: 100000;\\n\\tdisplay: block !important;\\n\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t&__inner {\\n\\t\\tpadding: 0;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--color-main-background);\\n\\t}\\n\\n\\t&__arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: $arrow-width;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n\\n\\t&[x-placement^='top'] {\\n\\t\\tmargin-bottom: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='bottom'] {\\n\\t\\tmargin-top: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='right'] {\\n\\t\\tmargin-left: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='left'] {\\n\\t\\tmargin-right: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true&\":\n/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true& ***!\n \\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\nul[data-v-0a0eb719] {\\n display: flex;\\n flex-direction: column;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./PopoverMenu.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AAqCF;EACC,aAAa;EACb,sBAAsB;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nul {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\nli[data-v-512ea768] {\\n display: flex;\\n flex: 0 0 auto;\\n /* css hack, only first not hidden */\\n}\\nli.hidden[data-v-512ea768] {\\n display: none;\\n}\\nli > button[data-v-512ea768],\\n li > a[data-v-512ea768],\\n li > .menuitem[data-v-512ea768] {\\n cursor: pointer;\\n line-height: 44px;\\n border: 0;\\n border-radius: 0;\\n background-color: transparent;\\n display: flex;\\n align-items: flex-start;\\n height: auto;\\n margin: 0;\\n padding: 0;\\n font-weight: normal;\\n box-shadow: none;\\n width: 100%;\\n color: var(--color-main-text);\\n white-space: nowrap;\\n opacity: 0.7;\\n /* prevent .action class to break the design */\\n /* Add padding if contains icon+text */\\n /* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n /* checkbox/radio fixes */\\n /* no margin if hidden span before */\\n /* Inputs inside popover supports text, submit & reset */\\n}\\nli > button span[class^='icon-'][data-v-512ea768],\\n li > button span[class*=' icon-'][data-v-512ea768], li > button[class^='icon-'][data-v-512ea768], li > button[class*=' icon-'][data-v-512ea768],\\n li > a span[class^='icon-'][data-v-512ea768],\\n li > a span[class*=' icon-'][data-v-512ea768],\\n li > a[class^='icon-'][data-v-512ea768],\\n li > a[class*=' icon-'][data-v-512ea768],\\n li > .menuitem span[class^='icon-'][data-v-512ea768],\\n li > .menuitem span[class*=' icon-'][data-v-512ea768],\\n li > .menuitem[class^='icon-'][data-v-512ea768],\\n li > .menuitem[class*=' icon-'][data-v-512ea768] {\\n min-width: 0;\\n /* Overwrite icons*/\\n min-height: 0;\\n background-position: 14px center;\\n background-size: 16px;\\n}\\nli > button span[class^='icon-'][data-v-512ea768],\\n li > button span[class*=' icon-'][data-v-512ea768],\\n li > a span[class^='icon-'][data-v-512ea768],\\n li > a span[class*=' icon-'][data-v-512ea768],\\n li > .menuitem span[class^='icon-'][data-v-512ea768],\\n li > .menuitem span[class*=' icon-'][data-v-512ea768] {\\n /* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n padding: 22px 0 22px 44px;\\n}\\nli > button:not([class^='icon-']):not([class*='icon-']) > span[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > button:not([class^='icon-']):not([class*='icon-']) > input[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > button:not([class^='icon-']):not([class*='icon-']) > form[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > a:not([class^='icon-']):not([class*='icon-']) > span[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > a:not([class^='icon-']):not([class*='icon-']) > input[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > a:not([class^='icon-']):not([class*='icon-']) > form[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > .menuitem:not([class^='icon-']):not([class*='icon-']) > span[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > .menuitem:not([class^='icon-']):not([class*='icon-']) > input[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child,\\n li > .menuitem:not([class^='icon-']):not([class*='icon-']) > form[data-v-512ea768]:not([class^='icon-']):not([class*='icon-']):first-child {\\n margin-left: 44px;\\n}\\nli > button[class^='icon-'][data-v-512ea768], li > button[class*=' icon-'][data-v-512ea768],\\n li > a[class^='icon-'][data-v-512ea768],\\n li > a[class*=' icon-'][data-v-512ea768],\\n li > .menuitem[class^='icon-'][data-v-512ea768],\\n li > .menuitem[class*=' icon-'][data-v-512ea768] {\\n padding: 0 14px 0 44px;\\n}\\nli > button[data-v-512ea768]:not(:disabled):hover, li > button[data-v-512ea768]:not(:disabled):focus, li > button:not(:disabled).active[data-v-512ea768],\\n li > a[data-v-512ea768]:not(:disabled):hover,\\n li > a[data-v-512ea768]:not(:disabled):focus,\\n li > a:not(:disabled).active[data-v-512ea768],\\n li > .menuitem[data-v-512ea768]:not(:disabled):hover,\\n li > .menuitem[data-v-512ea768]:not(:disabled):focus,\\n li > .menuitem:not(:disabled).active[data-v-512ea768] {\\n opacity: 1 !important;\\n}\\nli > button.action[data-v-512ea768],\\n li > a.action[data-v-512ea768],\\n li > .menuitem.action[data-v-512ea768] {\\n padding: inherit !important;\\n}\\nli > button > span[data-v-512ea768],\\n li > a > span[data-v-512ea768],\\n li > .menuitem > span[data-v-512ea768] {\\n cursor: pointer;\\n white-space: nowrap;\\n}\\nli > button > p[data-v-512ea768],\\n li > a > p[data-v-512ea768],\\n li > .menuitem > p[data-v-512ea768] {\\n width: 150px;\\n line-height: 1.6em;\\n padding: 8px 0;\\n white-space: normal;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\nli > button > select[data-v-512ea768],\\n li > a > select[data-v-512ea768],\\n li > .menuitem > select[data-v-512ea768] {\\n margin: 0;\\n margin-left: 6px;\\n}\\nli > button[data-v-512ea768]:not(:empty),\\n li > a[data-v-512ea768]:not(:empty),\\n li > .menuitem[data-v-512ea768]:not(:empty) {\\n padding-right: 14px !important;\\n}\\nli > button > img[data-v-512ea768],\\n li > a > img[data-v-512ea768],\\n li > .menuitem > img[data-v-512ea768] {\\n width: 16px;\\n padding: 14px;\\n}\\nli > button > input.radio + label[data-v-512ea768],\\n li > button > input.checkbox + label[data-v-512ea768],\\n li > a > input.radio + label[data-v-512ea768],\\n li > a > input.checkbox + label[data-v-512ea768],\\n li > .menuitem > input.radio + label[data-v-512ea768],\\n li > .menuitem > input.checkbox + label[data-v-512ea768] {\\n padding: 0 !important;\\n width: 100%;\\n}\\nli > button > input.checkbox + label[data-v-512ea768]::before,\\n li > a > input.checkbox + label[data-v-512ea768]::before,\\n li > .menuitem > input.checkbox + label[data-v-512ea768]::before {\\n margin: -2px 13px 0;\\n}\\nli > button > input.radio + label[data-v-512ea768]::before,\\n li > a > input.radio + label[data-v-512ea768]::before,\\n li > .menuitem > input.radio + label[data-v-512ea768]::before {\\n margin: -2px 12px 0;\\n}\\nli > button > input[data-v-512ea768]:not([type=radio]):not([type=checkbox]):not([type=image]),\\n li > a > input[data-v-512ea768]:not([type=radio]):not([type=checkbox]):not([type=image]),\\n li > .menuitem > input[data-v-512ea768]:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n width: 150px;\\n}\\nli > button form[data-v-512ea768],\\n li > a form[data-v-512ea768],\\n li > .menuitem form[data-v-512ea768] {\\n display: flex;\\n flex: 1 1 auto;\\n /* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n}\\nli > button form[data-v-512ea768]:not(:first-child),\\n li > a form[data-v-512ea768]:not(:first-child),\\n li > .menuitem form[data-v-512ea768]:not(:first-child) {\\n margin-left: 5px;\\n}\\nli > button > span.hidden + form[data-v-512ea768],\\n li > button > span[style*='display:none'] + form[data-v-512ea768],\\n li > a > span.hidden + form[data-v-512ea768],\\n li > a > span[style*='display:none'] + form[data-v-512ea768],\\n li > .menuitem > span.hidden + form[data-v-512ea768],\\n li > .menuitem > span[style*='display:none'] + form[data-v-512ea768] {\\n margin-left: 0;\\n}\\nli > button input[data-v-512ea768],\\n li > a input[data-v-512ea768],\\n li > .menuitem input[data-v-512ea768] {\\n min-width: 44px;\\n max-height: 40px;\\n /* twice the element margin-y */\\n margin: 2px 0;\\n flex: 1 1 auto;\\n}\\nli > button input[data-v-512ea768]:not(:first-child),\\n li > a input[data-v-512ea768]:not(:first-child),\\n li > .menuitem input[data-v-512ea768]:not(:first-child) {\\n margin-left: 5px;\\n}\\nli:not(.hidden):not([style*='display:none']):first-of-type > button > form[data-v-512ea768], li:not(.hidden):not([style*='display:none']):first-of-type > button > input[data-v-512ea768], li:not(.hidden):not([style*='display:none']):first-of-type > a > form[data-v-512ea768], li:not(.hidden):not([style*='display:none']):first-of-type > a > input[data-v-512ea768], li:not(.hidden):not([style*='display:none']):first-of-type > .menuitem > form[data-v-512ea768], li:not(.hidden):not([style*='display:none']):first-of-type > .menuitem > input[data-v-512ea768] {\\n margin-top: 12px;\\n}\\nli:not(.hidden):not([style*='display:none']):last-of-type > button > form[data-v-512ea768], li:not(.hidden):not([style*='display:none']):last-of-type > button > input[data-v-512ea768], li:not(.hidden):not([style*='display:none']):last-of-type > a > form[data-v-512ea768], li:not(.hidden):not([style*='display:none']):last-of-type > a > input[data-v-512ea768], li:not(.hidden):not([style*='display:none']):last-of-type > .menuitem > form[data-v-512ea768], li:not(.hidden):not([style*='display:none']):last-of-type > .menuitem > input[data-v-512ea768] {\\n margin-bottom: 12px;\\n}\\nli > button[data-v-512ea768] {\\n padding: 0;\\n}\\nli > button span[data-v-512ea768] {\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./PopoverMenuItem.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AAuLF;EACC,aAAa;EACb,cAAc;EAuJd,oCAAA;AAAqC;AAzJtC;IAKE,aAAa;AAAA;AALf;;;IAWE,eAAe;IACf,iBC/LmB;IDgMnB,SAAS;IACT,gBAAgB;IAChB,6BAA6B;IAC7B,aAAa;IACb,uBAAuB;IACvB,YAAY;IACZ,SAAS;IACT,UAAU;IACV,mBAAmB;IACnB,gBAAgB;IAChB,WAAW;IACX,6BAA6B;IAC7B,mBAAmB;IACnB,YC3LiB;IDqOjB,8CAAA;IA4BA,sCAAA;IAKA;sBA/PoB;IAsQpB,yBAAA;IA0BA,oCAAA;IAKA,wDAAA;AAAyD;AA3I3D;;;;;;;;;;MAiCG,YAAY;MAAE,mBAAA;MACd,aAAa;MACb,gCAA2C;MAC3C,qBCnNa;AAAA;AD+KhB;;;;;;MAyCG;gDAzK6C;MA2K7C,yBC9NkB;AAAA;ADmLrB;;;;;;;;;MAoDK,iBCvOgB;AAAA;ADmLrB;;;;;MA2DG,sBC9OkB;AAAA;ADmLrB;;;;;;;MAiEG,qBAAiC;AAAA;AAjEpC;;;MAsEG,2BAA2B;AAAA;AAtE9B;;;MA0EG,eAAe;MACf,mBAAmB;AAAA;AA3EtB;;;MAgFG,YAAY;MACZ,kBAAkB;MAClB,cAAc;MACd,mBAAmB;MAGnB,gBAAgB;MAChB,uBAAuB;AAAA;AAvF1B;;;MA4FG,SAAS;MACT,gBAAgB;AAAA;AA7FnB;;;MAkGG,8BAAsC;AAAA;AAlGzC;;;MAwGG,WCvRa;MDwRb,aCpR6C;AAAA;AD2KhD;;;;;;MA+GG,qBAAqB;MACrB,WAAW;AAAA;AAhHd;;;MAmHG,mBAAmB;AAAA;AAnHtB;;;MAsHG,mBAAmB;AAAA;AAtHtB;;;MAyHG,YAAY;AAAA;AAzHf;;;MA8HG,aAAa;MACb,cAAc;MACd;mCA5KgC;AA6KC;AAjIpC;;;QAmII,gBAAgB;AAAA;AAnIpB;;;;;;MAyIG,cAAc;AAAA;AAzIjB;;;MA6IG,eChUkB;MDiUlB,gBAAY;MAA0B,+BAAA;MACtC,aAAa;MACb,cAAc;AAAA;AAhJjB;;;QAmJI,gBAAgB;AAAA;AAnJpB;IA8JK,gBAA8B;AAAA;AA9JnC;IAqKK,mBAAiC;AAAA;AArKtC;IA2KE,UAAU;AAAA;AA3KZ;MA6KG,UC7Ua;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\tpadding: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true&\":\n/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true& ***!\n \\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.mention-bubble--primary .mention-bubble__content[data-v-69f40ec8] {\\n color: var(--color-primary-text);\\n background-color: var(--color-primary-element);\\n}\\n.mention-bubble__wrapper[data-v-69f40ec8] {\\n max-width: 150px;\\n height: 18px;\\n vertical-align: text-bottom;\\n display: inline-flex;\\n align-items: center;\\n}\\n.mention-bubble__content[data-v-69f40ec8] {\\n display: inline-flex;\\n overflow: hidden;\\n align-items: center;\\n max-width: 100%;\\n height: 20px;\\n -webkit-user-select: none;\\n user-select: none;\\n padding-right: 6px;\\n padding-left: 2px;\\n border-radius: 10px;\\n background-color: var(--color-background-dark);\\n}\\n.mention-bubble__icon[data-v-69f40ec8] {\\n position: relative;\\n width: 16px;\\n height: 16px;\\n border-radius: 8px;\\n background-color: var(--color-background-darker);\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 12px;\\n}\\n.mention-bubble__icon--with-avatar[data-v-69f40ec8] {\\n color: inherit;\\n background-size: cover;\\n}\\n.mention-bubble__title[data-v-69f40ec8] {\\n overflow: hidden;\\n margin-left: 2px;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.mention-bubble__title[data-v-69f40ec8]::before {\\n content: attr(title);\\n}\\n.mention-bubble__select[data-v-69f40ec8] {\\n position: absolute;\\n z-index: -1;\\n left: -1000px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./MentionBubble.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AAiFD;EACC,gCAAgC;EAChC,8CAA8C;AAAA;AAG/C;EACC,gBAXsB;EAatB,YAAwC;EACxC,2BAA2B;EAC3B,oBAAoB;EACpB,mBAAmB;AAAA;AAGpB;EACC,oBAAoB;EACpB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,YAzBkB;EA0BlB,yBAAyB;EACzB,iBAAiB;EACjB,kBAAkC;EAClC,iBA3BkB;EA4BlB,mBAAiC;EACjC,8CAA8C;AAAA;AAG/C;EACC,kBAAkB;EAClB,WAjCuD;EAkCvD,YAlCuD;EAmCvD,kBAAsC;EACtC,gDAAgD;EAChD,4BAA4B;EAC5B,2BAA2B;EAC3B,qBAA0D;AAAA;AAE1D;IACC,cAAc;IACd,sBAAsB;AAAA;AAIxB;EACC,gBAAgB;EAChB,gBAlDkB;EAmDlB,mBAAmB;EACnB,uBAAuB;AAAA;AAJvB;IAOC,oBAAoB;AAAA;AAKtB;EACC,kBAAkB;EAClB,WAAW;EACX,aAAa;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$bubble-height: 20px;\\n$bubble-max-width: 150px;\\n$bubble-padding: 2px;\\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\\n\\n.mention-bubble {\\n\\t&--primary &__content {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tmax-width: $bubble-max-width;\\n\\t\\t// Align with text\\n\\t\\theight: $bubble-height - $bubble-padding;\\n\\t\\tvertical-align: text-bottom;\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: inline-flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tmax-width: 100%;\\n\\t\\theight: $bubble-height ;\\n\\t\\t-webkit-user-select: none;\\n\\t\\tuser-select: none;\\n\\t\\tpadding-right: $bubble-padding * 3;\\n\\t\\tpadding-left: $bubble-padding;\\n\\t\\tborder-radius: $bubble-height / 2;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\twidth: $bubble-avatar-size;\\n\\t\\theight: $bubble-avatar-size;\\n\\t\\tborder-radius: $bubble-avatar-size / 2;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\\n\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\tmargin-left: $bubble-padding;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Put label in ::before so it is not selectable\\n\\t\\t&::before {\\n\\t\\t\\tcontent: attr(title);\\n\\t\\t}\\n\\t}\\n\\n\\t// Hide the mention id so it is selectable\\n\\t&__select {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: -1;\\n\\t\\tleft: -1000px;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css&\":\n/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css& ***!\n \\****************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"\\nbutton.menuitem[data-v-512ea768] {\\n\\ttext-align: left;\\n}\\nbutton.menuitem *[data-v-512ea768] {\\n\\tcursor: pointer;\\n}\\nbutton.menuitem[data-v-512ea768]:disabled {\\n\\topacity: 0.5 !important;\\n\\tcursor: default;\\n}\\nbutton.menuitem:disabled *[data-v-512ea768] {\\n\\tcursor: default;\\n}\\n.menuitem.active[data-v-512ea768] {\\n\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\tborder-radius: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./PopoverMenuItem.vue\"],\"names\":[],\"mappings\":\";AAmLA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,4CAAA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @author John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<li class=\\\"popover__menuitem\\\">\\n\\t\\t<!-- If item.href is set, a link will be directly used -->\\n\\t\\t<a v-if=\\\"item.href\\\"\\n\\t\\t\\t:href=\\\"(item.href) ? item.href : '#' \\\"\\n\\t\\t\\t:target=\\\"(item.target) ? item.target : '' \\\"\\n\\t\\t\\t:download=\\\"item.download\\\"\\n\\t\\t\\tclass=\\\"focusable\\\"\\n\\t\\t\\trel=\\\"noreferrer noopener\\\"\\n\\t\\t\\t@click=\\\"action\\\">\\n\\t\\t\\t<span v-if=\\\"!iconIsUrl\\\" :class=\\\"item.icon\\\" />\\n\\t\\t\\t<img v-else :src=\\\"item.icon\\\">\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</a>\\n\\n\\t\\t<!-- If item.input is set instead, an put will be used -->\\n\\t\\t<span v-else-if=\\\"item.input\\\" class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<!-- does not show if input is checkbox -->\\n\\t\\t\\t<span v-if=\\\"item.input !== 'checkbox'\\\" :class=\\\"item.icon\\\" />\\n\\n\\t\\t\\t<!-- only shows if input is text -->\\n\\t\\t\\t<form v-if=\\\"item.input === 'text'\\\"\\n\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t@submit.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t<input :type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:value=\\\"item.value\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"item.text\\\"\\n\\t\\t\\t\\t\\trequired>\\n\\t\\t\\t\\t<input type=\\\"submit\\\" value=\\\"\\\" class=\\\"icon-confirm\\\">\\n\\t\\t\\t</form>\\n\\n\\t\\t\\t<!-- checkbox -->\\n\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t<!-- eslint-disable-next-line -->\\n\\t\\t\\t\\t<input :id=\\\"key\\\" v-model=\\\"item.model\\\"\\n\\t\\t\\t\\t\\t:type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t@change=\\\"item.action\\\">\\n\\t\\t\\t\\t<label :for=\\\"key\\\" @click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</template>\\n\\t\\t</span>\\n\\n\\t\\t<!-- If item.action is set instead, a button will be used -->\\n\\t\\t<button v-else-if=\\\"item.action\\\"\\n\\t\\t\\tclass=\\\"menuitem focusable\\\"\\n\\t\\t\\t:class=\\\"{active: item.active}\\\"\\n\\t\\t\\t:disabled=\\\"item.disabled\\\"\\n\\t\\t\\t@click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</button>\\n\\n\\t\\t<!-- If item.longtext is set AND the item does not have an action -->\\n\\t\\t<span v-else class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</span>\\n\\t</li>\\n</template>\\n\\n<script>\\nexport default {\\n\\tname: 'PopoverMenuItem',\\n\\tprops: {\\n\\t\\titem: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t\\tdefault: () => {\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tkey: 'nextcloud-link',\\n\\t\\t\\t\\t\\thref: 'https://nextcloud.com',\\n\\t\\t\\t\\t\\ticon: 'icon-links',\\n\\t\\t\\t\\t\\ttext: 'Nextcloud',\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\t// check the input types\\n\\t\\t\\t// TODO: add more validation of types\\n\\t\\t\\tvalidator: item => {\\n\\t\\t\\t\\t// TODO: support radio\\n\\t\\t\\t\\tif (item.input) {\\n\\t\\t\\t\\t\\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t},\\n\\t\\t},\\n\\t},\\n\\tcomputed: {\\n\\t\\t// random key for inputs binding if not provided\\n\\t\\tkey() {\\n\\t\\t\\treturn this.item.key\\n\\t\\t\\t\\t? this.item.key\\n\\t\\t\\t\\t: Math.round(Math.random() * 16 * 1000000).toString(16)\\n\\t\\t},\\n\\t\\ticonIsUrl() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// eslint-disable-next-line no-new\\n\\t\\t\\t\\tnew URL(this.item.icon)\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t} catch (_) {\\n\\t\\t\\t\\treturn false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\t// allow us to use both link and an action on `a`\\n\\t\\t// we still need to make sure item.action exists\\n\\t\\taction(event) {\\n\\t\\t\\tif (this.item.action) {\\n\\t\\t\\t\\tthis.item.action(event)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tbutton.menuitem {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\tbutton.menuitem * {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\tbutton.menuitem:disabled {\\n\\t\\topacity: 0.5 !important;\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\tbutton.menuitem:disabled * {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.menuitem.active {\\n\\t\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\t\\tborder-radius: 0;\\n\\t}\\n</style>\\n\\n<style lang=\\\"scss\\\" scoped>\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\tpadding: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/api.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/api.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/getUrl.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss&\":\n/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss& ***!\n \\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_style_index_0_id_100e3b6f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_style_index_0_id_100e3b6f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_style_index_0_id_100e3b6f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true&\":\n/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true& ***!\n \\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_style_index_0_id_7fe95a8f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_style_index_0_id_7fe95a8f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_style_index_0_id_7fe95a8f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true&\":\n/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true& ***!\n \\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_style_index_0_id_026c3def_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_style_index_0_id_026c3def_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_style_index_0_id_026c3def_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_style_index_0_id_0a0eb719_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_style_index_0_id_0a0eb719_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_style_index_0_id_0a0eb719_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_1_id_512ea768_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_1_id_512ea768_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_1_id_512ea768_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true&\":\n/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true& ***!\n \\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_style_index_0_id_69f40ec8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_style_index_0_id_69f40ec8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_style_index_0_id_69f40ec8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css&\":\n/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css& ***!\n \\********************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_0_id_512ea768_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_0_id_512ea768_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_0_id_512ea768_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=template&id=100e3b6f&scoped=true&\":\n/*!*******************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Avatar/Avatar.vue?vue&type=template&id=100e3b6f&scoped=true& ***!\n \\*******************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n _vm._g(\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip\",\n value: _vm.tooltip,\n expression: \"tooltip\"\n },\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.closeMenu,\n expression: \"closeMenu\"\n }\n ],\n staticClass: \"avatardiv popovermenu-wrapper\",\n class: {\n \"avatardiv--unknown\": _vm.userDoesNotExist,\n \"avatardiv--with-menu\": _vm.hasMenu\n },\n style: _vm.avatarStyle\n },\n !_vm.disableMenu ? { click: _vm.toggleMenu } : {}\n ),\n [\n _vm.iconClass\n ? _c(\"div\", { staticClass: \"avatar-class-icon\", class: _vm.iconClass })\n : _vm.isAvatarLoaded && !_vm.userDoesNotExist\n ? _c(\"img\", {\n attrs: {\n src: _vm.avatarUrlLoaded,\n srcset: _vm.avatarSrcSetLoaded,\n alt: \"\"\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.hasMenu\n ? _c(\n \"Popover\",\n {\n attrs: {\n placement: \"auto\",\n container: _vm.menuContainer,\n open: _vm.contactsMenuOpenState\n }\n },\n [\n _c(\"PopoverMenu\", { attrs: { menu: _vm.menu } }),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"trigger\" }, [\n _c(\"div\", {\n class: _vm.contactsMenuLoading ? \"icon-loading\" : \"icon-more\",\n style: { width: _vm.size + \"px\", height: _vm.size + \"px\" }\n })\n ])\n ],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showUserStatusIconOnAvatar\n ? _c(\n \"div\",\n {\n staticClass: \"avatardiv__user-status avatardiv__user-status--icon\"\n },\n [_vm._v(\"\\n\\t\\t\" + _vm._s(_vm.userStatus.icon) + \"\\n\\t\")]\n )\n : _vm.canDisplayUserStatus\n ? _c(\"div\", {\n staticClass: \"avatardiv__user-status\",\n class: \"avatardiv__user-status--\" + _vm.userStatus.status\n })\n : _vm.status\n ? _c(\n \"div\",\n {\n staticClass: \"avatardiv__status\",\n class: \"avatardiv__status--\" + _vm.status,\n style: { backgroundColor: \"#\" + _vm.statusColor }\n },\n [\n _vm.status === \"neutral\"\n ? _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"11\",\n viewBox: \"0 0 3.175 2.91\"\n }\n },\n [\n _c(\"path\", {\n style: { fill: \"#\" + _vm.statusColor },\n attrs: {\n d: \"M3.21 3.043H.494l.679-1.177.68-1.176.678 1.176z\",\n stroke: \"#fff\",\n \"stroke-width\": \".265\",\n \"stroke-linecap\": \"square\"\n }\n })\n ]\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.userDoesNotExist && !_vm.iconClass\n ? _c(\"div\", { staticClass: \"unknown\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.initials) + \"\\n\\t\")\n ])\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true&\":\n/*!*******************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true& ***!\n \\*******************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n _vm._g(\n { staticClass: \"option\", style: _vm.cssVars, attrs: { id: _vm.id } },\n _vm.$listeners\n ),\n [\n _c(\n \"Avatar\",\n _vm._b(\n {\n staticClass: \"option__avatar\",\n attrs: {\n \"disable-menu\": true,\n \"disable-tooltip\": true,\n \"display-name\": _vm.displayName || _vm.title,\n \"is-no-user\": _vm.isNoUser,\n size: _vm.avatarSize\n }\n },\n \"Avatar\",\n _vm.$attrs,\n false\n )\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"option__details\" },\n [\n _c(\"Highlight\", {\n staticClass: \"option__lineone\",\n attrs: { text: _vm.title, search: _vm.search }\n }),\n _vm._v(\" \"),\n _vm.isValidSubtitle && _vm.isSizeBigEnough\n ? _c(\"Highlight\", {\n staticClass: \"option__linetwo\",\n attrs: { text: _vm.subtitle, search: _vm.search }\n })\n : _vm.hasStatus\n ? _c(\"span\", [\n _c(\"span\", [_vm._v(_vm._s(_vm.userStatus.icon))]),\n _vm._v(\" \"),\n _c(\"span\", [_vm._v(_vm._s(_vm.userStatus.message))])\n ])\n : _vm._e()\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm._t(\"default\"),\n _vm._v(\" \"),\n _vm.hasIcon && !_vm.hasSlot\n ? _c(\"span\", { staticClass: \"icon option__icon\", class: _vm.icon })\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true&\":\n/*!**********************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Multiselect/EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true& ***!\n \\**********************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"name-parts\", attrs: { title: _vm.name } },\n [\n _c(\"Highlight\", {\n staticClass: \"name-parts__first\",\n attrs: {\n text: _vm.part1,\n search: _vm.search,\n highlight: _vm.highlight1\n }\n }),\n _vm._v(\" \"),\n _vm.part2\n ? _c(\"Highlight\", {\n staticClass: \"name-parts__last\",\n attrs: {\n text: _vm.part2,\n search: _vm.search,\n highlight: _vm.highlight2\n }\n })\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/Multiselect.vue?vue&type=template&id=1cd2ff8a&\":\n/*!*****************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Multiselect/Multiselect.vue?vue&type=template&id=1cd2ff8a& ***!\n \\*****************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"VueMultiselect\",\n _vm._g(\n _vm._b(\n {\n ref: \"VueMultiselect\",\n class: [\n {\n \"icon-loading-small\": _vm.loading\n },\n _vm.multiple ? \"multiselect--multiple\" : \"multiselect--single\"\n ],\n attrs: {\n options: _vm.options,\n limit: _vm.maxOptions,\n \"close-on-select\": !_vm.multiple,\n multiple: _vm.multiple,\n label: _vm.label,\n \"track-by\": _vm.trackBy,\n \"tag-placeholder\": \"create\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"option\",\n fn: function(scope) {\n return [\n _vm.userSelect && !_vm.$scopedSlots[\"option\"]\n ? _c(\n \"ListItemIcon\",\n _vm._b(\n {\n attrs: {\n title: scope.option[_vm.label],\n search: scope.search\n }\n },\n \"ListItemIcon\",\n scope.option,\n false\n )\n )\n : !_vm.$scopedSlots[\"option\"]\n ? _c(\"EllipsisedOption\", {\n attrs: {\n name: _vm.getOptionLabel(scope.option),\n option: scope.option,\n search: scope.search,\n label: _vm.label\n }\n })\n : _vm._t(\"option\", null, null, scope)\n ]\n }\n },\n _vm.multiple\n ? {\n key: \"limit\",\n fn: function() {\n return [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.formatLimitTitle(_vm.value),\n expression: \"formatLimitTitle(value)\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"multiselect__limit\"\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.limitString) + \"\\n\\t\\t\"\n )\n ]\n )\n ]\n },\n proxy: true\n }\n : null,\n _vm._l(_vm.$scopedSlots, function(_, slot) {\n return {\n key: slot,\n fn: function(scope) {\n return [_vm._t(slot, null, null, scope)]\n }\n }\n })\n ],\n null,\n true\n ),\n model: {\n value: _vm.localValue,\n callback: function($$v) {\n _vm.localValue = $$v\n },\n expression: \"localValue\"\n }\n },\n \"VueMultiselect\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _vm._v(\" \"),\n _vm._v(\" \"),\n _vm._v(\" \"),\n _c(\"span\", { attrs: { slot: \"noResult\" }, slot: \"noResult\" }, [\n _vm._v(_vm._s(_vm.t(\"No results\")))\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\":\n/*!*********************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=template&id=45093cca& ***!\n \\*********************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"VPopover\",\n _vm._g(\n _vm._b(\n {\n ref: \"popover\",\n attrs: {\n \"popover-base-class\": \"popover\",\n \"popover-wrapper-class\": \"popover__wrapper\",\n \"popover-arrow-class\": \"popover__arrow\",\n \"popover-inner-class\": \"popover__inner\"\n }\n },\n \"VPopover\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _vm._t(\"trigger\"),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"popover\" }, [_vm._t(\"default\")], 2)\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true&\":\n/*!*****************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true& ***!\n \\*****************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"ul\",\n { staticClass: \"popover__menu\" },\n _vm._l(_vm.menu, function(item, key) {\n return _c(\"PopoverMenuItem\", { key: key, attrs: { item: item } })\n }),\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true&\":\n/*!*********************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true& ***!\n \\*********************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"li\", { staticClass: \"popover__menuitem\" }, [\n _vm.item.href\n ? _c(\n \"a\",\n {\n staticClass: \"focusable\",\n attrs: {\n href: _vm.item.href ? _vm.item.href : \"#\",\n target: _vm.item.target ? _vm.item.target : \"\",\n download: _vm.item.download,\n rel: \"noreferrer noopener\"\n },\n on: { click: _vm.action }\n },\n [\n !_vm.iconIsUrl\n ? _c(\"span\", { class: _vm.item.icon })\n : _c(\"img\", { attrs: { src: _vm.item.icon } }),\n _vm._v(\" \"),\n _vm.item.text && _vm.item.longtext\n ? _c(\"p\", [\n _c(\"strong\", { staticClass: \"menuitem-text\" }, [\n _vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\\t\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"menuitem-text-detail\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.longtext) + \"\\n\\t\\t\\t\"\n )\n ])\n ])\n : _vm.item.text\n ? _c(\"span\", [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\")\n ])\n : _vm.item.longtext\n ? _c(\"p\", [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.item.longtext) + \"\\n\\t\\t\")\n ])\n : _vm._e()\n ]\n )\n : _vm.item.input\n ? _c(\n \"span\",\n { staticClass: \"menuitem\", class: { active: _vm.item.active } },\n [\n _vm.item.input !== \"checkbox\"\n ? _c(\"span\", { class: _vm.item.icon })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.item.input === \"text\"\n ? _c(\n \"form\",\n {\n class: _vm.item.input,\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.item.action($event)\n }\n }\n },\n [\n _c(\"input\", {\n attrs: {\n type: _vm.item.input,\n placeholder: _vm.item.text,\n required: \"\"\n },\n domProps: { value: _vm.item.value }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n )\n : [\n _vm.item.input === \"checkbox\"\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.item.model,\n expression: \"item.model\"\n }\n ],\n class: _vm.item.input,\n attrs: { id: _vm.key, type: \"checkbox\" },\n domProps: {\n checked: Array.isArray(_vm.item.model)\n ? _vm._i(_vm.item.model, null) > -1\n : _vm.item.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.item.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n _vm.item,\n \"model\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n _vm.item,\n \"model\",\n $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1))\n )\n }\n } else {\n _vm.$set(_vm.item, \"model\", $$c)\n }\n },\n _vm.item.action\n ]\n }\n })\n : _vm.item.input === \"radio\"\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.item.model,\n expression: \"item.model\"\n }\n ],\n class: _vm.item.input,\n attrs: { id: _vm.key, type: \"radio\" },\n domProps: { checked: _vm._q(_vm.item.model, null) },\n on: {\n change: [\n function($event) {\n return _vm.$set(_vm.item, \"model\", null)\n },\n _vm.item.action\n ]\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.item.model,\n expression: \"item.model\"\n }\n ],\n class: _vm.item.input,\n attrs: { id: _vm.key, type: _vm.item.input },\n domProps: { value: _vm.item.model },\n on: {\n change: _vm.item.action,\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.item, \"model\", $event.target.value)\n }\n }\n }),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: { for: _vm.key },\n on: {\n click: function($event) {\n $event.stopPropagation()\n $event.preventDefault()\n return _vm.item.action($event)\n }\n }\n },\n [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\\t\")]\n )\n ]\n ],\n 2\n )\n : _vm.item.action\n ? _c(\n \"button\",\n {\n staticClass: \"menuitem focusable\",\n class: { active: _vm.item.active },\n attrs: { disabled: _vm.item.disabled },\n on: {\n click: function($event) {\n $event.stopPropagation()\n $event.preventDefault()\n return _vm.item.action($event)\n }\n }\n },\n [\n _c(\"span\", { class: _vm.item.icon }),\n _vm._v(\" \"),\n _vm.item.text && _vm.item.longtext\n ? _c(\"p\", [\n _c(\"strong\", { staticClass: \"menuitem-text\" }, [\n _vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\\t\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"menuitem-text-detail\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.longtext) + \"\\n\\t\\t\\t\"\n )\n ])\n ])\n : _vm.item.text\n ? _c(\"span\", [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\")\n ])\n : _vm.item.longtext\n ? _c(\"p\", [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.item.longtext) + \"\\n\\t\\t\")\n ])\n : _vm._e()\n ]\n )\n : _c(\n \"span\",\n { staticClass: \"menuitem\", class: { active: _vm.item.active } },\n [\n _c(\"span\", { class: _vm.item.icon }),\n _vm._v(\" \"),\n _vm.item.text && _vm.item.longtext\n ? _c(\"p\", [\n _c(\"strong\", { staticClass: \"menuitem-text\" }, [\n _vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\\t\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"menuitem-text-detail\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" + _vm._s(_vm.item.longtext) + \"\\n\\t\\t\\t\"\n )\n ])\n ])\n : _vm.item.text\n ? _c(\"span\", [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.item.text) + \"\\n\\t\\t\")\n ])\n : _vm.item.longtext\n ? _c(\"p\", [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.item.longtext) + \"\\n\\t\\t\")\n ])\n : _vm._e()\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true&\":\n/*!***************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/RichContenteditable/MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true& ***!\n \\***************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n {\n staticClass: \"mention-bubble\",\n class: { \"mention-bubble--primary\": _vm.primary },\n attrs: { contenteditable: \"false\" }\n },\n [\n _c(\"span\", { staticClass: \"mention-bubble__wrapper\" }, [\n _c(\"span\", { staticClass: \"mention-bubble__content\" }, [\n _c(\"span\", {\n staticClass: \"mention-bubble__icon\",\n class: [\n _vm.icon,\n \"mention-bubble__icon--\" + (_vm.avatarUrl ? \"with-avatar\" : \"\")\n ],\n style: _vm.avatarUrl\n ? { backgroundImage: \"url(\" + _vm.avatarUrl + \")\" }\n : null\n }),\n _vm._v(\" \"),\n _c(\"span\", {\n staticClass: \"mention-bubble__title\",\n attrs: { role: \"heading\", title: _vm.label }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"mention-bubble__select\", attrs: { role: \"none\" } },\n [_vm._v(_vm._s(_vm.mentionText))]\n )\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"./src/components/Avatar/Avatar.vue\":\n/*!******************************************!*\\\n !*** ./src/components/Avatar/Avatar.vue ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Avatar.vue?vue&type=template&id=100e3b6f&scoped=true& */ \"./src/components/Avatar/Avatar.vue?vue&type=template&id=100e3b6f&scoped=true&\");\n/* harmony import */ var _Avatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Avatar.vue?vue&type=script&lang=js& */ \"./src/components/Avatar/Avatar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Avatar_vue_vue_type_style_index_0_id_100e3b6f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss& */ \"./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Avatar.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Avatar/Avatar.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _Avatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"100e3b6f\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _Avatar_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Avatar/Avatar.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Avatar/Avatar.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*********************************************************************************!*\\\n !*** ./src/components/Avatar/Avatar.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Avatar/Avatar.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************!*\\\n !*** ./src/components/Avatar/Avatar.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Avatar.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss&\":\n/*!****************************************************************************************************!*\\\n !*** ./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss& ***!\n \\****************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_style_index_0_id_100e3b6f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=style&index=0&id=100e3b6f&scoped=true&lang=scss&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/Avatar/Avatar.vue?vue&type=template&id=100e3b6f&scoped=true&\":\n/*!*************************************************************************************!*\\\n !*** ./src/components/Avatar/Avatar.vue?vue&type=template&id=100e3b6f&scoped=true& ***!\n \\*************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Avatar.vue?vue&type=template&id=100e3b6f&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Avatar/Avatar.vue?vue&type=template&id=100e3b6f&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Avatar_vue_vue_type_template_id_100e3b6f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Avatar/index.js\":\n/*!****************************************!*\\\n !*** ./src/components/Avatar/index.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Avatar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Avatar */ \"./src/components/Avatar/Avatar.vue\");\n/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Avatar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/Highlight/Highlight.vue\":\n/*!************************************************!*\\\n !*** ./src/components/Highlight/Highlight.vue ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Highlight_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Highlight.vue?vue&type=script&lang=js& */ \"./src/components/Highlight/Highlight.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Highlight.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Highlight/Highlight.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2__);\nvar render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _Highlight_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2___default.a === 'function') _Highlight_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_2___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Highlight/Highlight.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Highlight/Highlight.vue?vue&type=custom&index=0&blockType=docs\":\n/*!***************************************************************************************!*\\\n !*** ./src/components/Highlight/Highlight.vue?vue&type=custom&index=0&blockType=docs ***!\n \\***************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Highlight/Highlight.vue?vue&type=script&lang=js&\":\n/*!*************************************************************************!*\\\n !*** ./src/components/Highlight/Highlight.vue?vue&type=script&lang=js& ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Highlight_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Highlight.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Highlight/Highlight.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Highlight_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Highlight/index.js\":\n/*!*******************************************!*\\\n !*** ./src/components/Highlight/index.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Highlight__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Highlight */ \"./src/components/Highlight/Highlight.vue\");\n/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Highlight__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/ListItemIcon/ListItemIcon.vue\":\n/*!******************************************************!*\\\n !*** ./src/components/ListItemIcon/ListItemIcon.vue ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true& */ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true&\");\n/* harmony import */ var _ListItemIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ListItemIcon.vue?vue&type=script&lang=js& */ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _ListItemIcon_vue_vue_type_style_index_0_id_7fe95a8f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true& */ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ListItemIcon.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _ListItemIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"7fe95a8f\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _ListItemIcon_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/ListItemIcon/ListItemIcon.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*********************************************************************************************!*\\\n !*** ./src/components/ListItemIcon/ListItemIcon.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*********************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************!*\\\n !*** ./src/components/ListItemIcon/ListItemIcon.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./ListItemIcon.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true&\":\n/*!****************************************************************************************************************!*\\\n !*** ./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true& ***!\n \\****************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_style_index_0_id_7fe95a8f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=style&index=0&id=7fe95a8f&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/ListItemIcon/ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true&\":\n/*!*************************************************************************************************!*\\\n !*** ./src/components/ListItemIcon/ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true& ***!\n \\*************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ListItemIcon/ListItemIcon.vue?vue&type=template&id=7fe95a8f&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItemIcon_vue_vue_type_template_id_7fe95a8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/ListItemIcon/index.js\":\n/*!**********************************************!*\\\n !*** ./src/components/ListItemIcon/index.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ListItemIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ListItemIcon */ \"./src/components/ListItemIcon/ListItemIcon.vue\");\n/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_ListItemIcon__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/EllipsisedOption.vue\":\n/*!*********************************************************!*\\\n !*** ./src/components/Multiselect/EllipsisedOption.vue ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true& */ \"./src/components/Multiselect/EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true&\");\n/* harmony import */ var _EllipsisedOption_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EllipsisedOption.vue?vue&type=script&lang=js& */ \"./src/components/Multiselect/EllipsisedOption.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _EllipsisedOption_vue_vue_type_style_index_0_id_026c3def_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true& */ \"./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _EllipsisedOption_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"026c3def\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Multiselect/EllipsisedOption.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/EllipsisedOption.vue?vue&type=script&lang=js&\":\n/*!**********************************************************************************!*\\\n !*** ./src/components/Multiselect/EllipsisedOption.vue?vue&type=script&lang=js& ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./EllipsisedOption.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true&\":\n/*!*******************************************************************************************************************!*\\\n !*** ./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true& ***!\n \\*******************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_style_index_0_id_026c3def_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=style&index=0&id=026c3def&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true&\":\n/*!****************************************************************************************************!*\\\n !*** ./src/components/Multiselect/EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true& ***!\n \\****************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/EllipsisedOption.vue?vue&type=template&id=026c3def&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_EllipsisedOption_vue_vue_type_template_id_026c3def_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/Multiselect.vue\":\n/*!****************************************************!*\\\n !*** ./src/components/Multiselect/Multiselect.vue ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Multiselect.vue?vue&type=template&id=1cd2ff8a& */ \"./src/components/Multiselect/Multiselect.vue?vue&type=template&id=1cd2ff8a&\");\n/* harmony import */ var _Multiselect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Multiselect.vue?vue&type=script&lang=js& */ \"./src/components/Multiselect/Multiselect.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Multiselect.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Multiselect/Multiselect.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _Multiselect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3___default.a === 'function') _Multiselect_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_3___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Multiselect/Multiselect.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/Multiselect.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*******************************************************************************************!*\\\n !*** ./src/components/Multiselect/Multiselect.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*******************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/Multiselect.vue?vue&type=script&lang=js&\":\n/*!*****************************************************************************!*\\\n !*** ./src/components/Multiselect/Multiselect.vue?vue&type=script&lang=js& ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Multiselect.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/Multiselect.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/Multiselect.vue?vue&type=template&id=1cd2ff8a&\":\n/*!***********************************************************************************!*\\\n !*** ./src/components/Multiselect/Multiselect.vue?vue&type=template&id=1cd2ff8a& ***!\n \\***********************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Multiselect.vue?vue&type=template&id=1cd2ff8a& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Multiselect/Multiselect.vue?vue&type=template&id=1cd2ff8a&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Multiselect_vue_vue_type_template_id_1cd2ff8a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/index.js\":\n/*!*********************************************!*\\\n !*** ./src/components/Multiselect/index.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_ScopeComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/ScopeComponent */ \"./src/utils/ScopeComponent.js\");\n/* harmony import */ var _Multiselect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Multiselect */ \"./src/components/Multiselect/Multiselect.vue\");\n/* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.scss */ \"./src/components/Multiselect/index.scss\");\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n\n\nObject(_utils_ScopeComponent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Multiselect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Multiselect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/Multiselect/index.scss\":\n/*!***********************************************!*\\\n !*** ./src/components/Multiselect/index.scss ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./src/components/Multiselect/index.scss\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue\":\n/*!********************************************!*\\\n !*** ./src/components/Popover/Popover.vue ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Popover.vue?vue&type=template&id=45093cca& */ \"./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\");\n/* harmony import */ var _Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Popover.vue?vue&type=script&lang=js& */ \"./src/components/Popover/Popover.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover.vue?vue&type=style&index=0&lang=scss& */ \"./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Popover.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Popover/Popover.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Popover/Popover.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=custom&index=0&blockType=docs\":\n/*!***********************************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=custom&index=0&blockType=docs ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\":\n/*!******************************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss& ***!\n \\******************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\":\n/*!***************************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=template&id=45093cca& ***!\n \\***************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=template&id=45093cca& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenu.vue\":\n/*!****************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenu.vue ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true& */ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true&\");\n/* harmony import */ var _PopoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PopoverMenu.vue?vue&type=script&lang=js& */ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _PopoverMenu_vue_vue_type_style_index_0_id_0a0eb719_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true& */ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PopoverMenu.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _PopoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"0a0eb719\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _PopoverMenu_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/PopoverMenu/PopoverMenu.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*******************************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenu.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*******************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=script&lang=js&\":\n/*!*****************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenu.vue?vue&type=script&lang=js& ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenu.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true&\":\n/*!**************************************************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true& ***!\n \\**************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_style_index_0_id_0a0eb719_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=style&index=0&id=0a0eb719&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true&\":\n/*!***********************************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true& ***!\n \\***********************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenu.vue?vue&type=template&id=0a0eb719&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenu_vue_vue_type_template_id_0a0eb719_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenuItem.vue\":\n/*!********************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenuItem.vue ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true& */ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true&\");\n/* harmony import */ var _PopoverMenuItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PopoverMenuItem.vue?vue&type=script&lang=js& */ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _PopoverMenuItem_vue_vue_type_style_index_0_id_512ea768_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css& */ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css&\");\n/* harmony import */ var _PopoverMenuItem_vue_vue_type_style_index_1_id_512ea768_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true& */ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\n _PopoverMenuItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"512ea768\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/PopoverMenu/PopoverMenuItem.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenuItem.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css&\":\n/*!*****************************************************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css& ***!\n \\*****************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_0_id_512ea768_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=0&id=512ea768&scoped=true&lang=css&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_style_index_1_id_512ea768_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=style&index=1&id=512ea768&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true&\":\n/*!***************************************************************************************************!*\\\n !*** ./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true& ***!\n \\***************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/PopoverMenu/PopoverMenuItem.vue?vue&type=template&id=512ea768&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PopoverMenuItem_vue_vue_type_template_id_512ea768_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/PopoverMenu/index.js\":\n/*!*********************************************!*\\\n !*** ./src/components/PopoverMenu/index.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PopoverMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PopoverMenu */ \"./src/components/PopoverMenu/PopoverMenu.vue\");\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_PopoverMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/RichContenteditable/MentionBubble.vue\":\n/*!**************************************************************!*\\\n !*** ./src/components/RichContenteditable/MentionBubble.vue ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true& */ \"./src/components/RichContenteditable/MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true&\");\n/* harmony import */ var _MentionBubble_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MentionBubble.vue?vue&type=script&lang=js& */ \"./src/components/RichContenteditable/MentionBubble.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _MentionBubble_vue_vue_type_style_index_0_id_69f40ec8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true& */ \"./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _MentionBubble_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"69f40ec8\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/RichContenteditable/MentionBubble.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/RichContenteditable/MentionBubble.vue?vue&type=script&lang=js&\":\n/*!***************************************************************************************!*\\\n !*** ./src/components/RichContenteditable/MentionBubble.vue?vue&type=script&lang=js& ***!\n \\***************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./MentionBubble.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true&\":\n/*!************************************************************************************************************************!*\\\n !*** ./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true& ***!\n \\************************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_style_index_0_id_69f40ec8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=style&index=0&id=69f40ec8&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/RichContenteditable/MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true&\":\n/*!*********************************************************************************************************!*\\\n !*** ./src/components/RichContenteditable/MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true& ***!\n \\*********************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/RichContenteditable/MentionBubble.vue?vue&type=template&id=69f40ec8&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MentionBubble_vue_vue_type_template_id_69f40ec8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/directives/Tooltip/index.js\":\n/*!*****************************************!*\\\n !*** ./src/directives/Tooltip/index.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! v-tooltip */ \"v-tooltip\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(v_tooltip__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.scss */ \"./src/directives/Tooltip/index.scss\");\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n // force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\n\nv_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VTooltip\"].options.defaultTemplate = \"<div class=\\\"vue-tooltip\\\" role=\\\"tooltip\\\" data-v-\".concat(\"84c461f\", \"><div class=\\\"tooltip-arrow\\\"></div><div class=\\\"tooltip-inner\\\"></div></div>\");\nv_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VTooltip\"].options.defaultHtml = false;\n/* harmony default export */ __webpack_exports__[\"default\"] = (v_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VTooltip\"]);\n\n/***/ }),\n\n/***/ \"./src/directives/Tooltip/index.scss\":\n/*!*******************************************!*\\\n !*** ./src/directives/Tooltip/index.scss ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./src/directives/Tooltip/index.scss\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.eot\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.eot ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:application/vnd.ms-fontobject;base64,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\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.svg\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.svg ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlLTg0YzQ2MWYiIGhvcml6LWFkdi14PSI1MDAwIj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJpY29uZm9udC12dWUtODRjNDYxZiIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zdHJldGNoPSJub3JtYWwiIHVuaXRzLXBlci1lbT0iNTAwMCIgcGFub3NlLTE9IjIgMCA1IDMgMCAwIDAgMCAwIDAiIGFzY2VudD0iNTAwMCIgZGVzY2VudD0iMCIgeC1oZWlnaHQ9IjAiIGJib3g9Ii0zMiAwIDUwMTEgNTAwMCIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iMCIgdW5kZXJsaW5lLXBvc2l0aW9uPSI1MCIgdW5pY29kZS1yYW5nZT0iVStlYTAxLWVhMTIiIC8+PG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjAiICAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0LWRvdWJsZSIgdW5pY29kZT0iJiN4ZWEwMTsiIGQ9Ik0zNzUwIDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaTTIzNDQgMzkwNiBsLTE0MDYgLTE0MDYgbDE0MDYgLTE0MDYgbDAgMzEyIGwtMTA5NCAxMDk0IGwxMDk0IDEwOTQgbDAgMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQiIHVuaWNvZGU9IiYjeGVhMDI7IiBkPSJNMTU2MyAyNTAwIGwxODc1IC0xODc1IGwwIC0zMTIgbC0yMTg4IDIxODcgbDIxODggMjE4OCBsMCAtMzEzIGwtMTg3NSAtMTg3NSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1yaWdodC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDM7IiBkPSJNMTI1MCAxMDk0IGwxNDA2IDE0MDYgbC0xNDA2IDE0MDYgbDAgLTMxMiBsMTA5NCAtMTA5NCBsLTEwOTQgLTEwOTQgbDAgLTMxMiBaTTI2NTYgMTA5NCBsMTQwNyAxNDA2IGwtMTQwNyAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQiIHVuaWNvZGU9IiYjeGVhMDQ7IiBkPSJNMzQzOCAyNTAwIGwtMTg3NSAxODc1IGwwIDMxMyBsMjE4NyAtMjE4OCBsLTIxODcgLTIxODcgbDAgMzEyIGwxODc1IDE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYnJlYWRjcnVtYiIgdW5pY29kZT0iJiN4ZWEwNTsiIGQ9Ik0xNDggNTAwMCBsLTE0OCAtODUgbDEzOTQgLTI0MTUgbC0xMzk0IC0yNDE1IGwxNDggLTg1IGwxNDQzIDI1MDAgbC0xNDQzIDI1MDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2ttYXJrIiB1bmljb2RlPSImI3hlYTA2OyIgZD0iTTQwNDUgMzk3MSBsLTIwNjEgLTIwNjEgbC0xMDI5IDEwMjkgbC00NDIgLTQ0MSBsMTQ3MSAtMTQ3MSBsMjUwMyAyNTAyIGwtNDQyIDQ0MiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJjbG9zZSIgdW5pY29kZT0iJiN4ZWEwNzsiIGQ9Ik00Mzc1IDExNTYgbC01MzEgLTUzMSBsLTEzNDQgMTM0NCBsLTEzNDQgLTEzNDQgbC01MzEgNTMxIGwxMzQ0IDEzNDQgbC0xMzQ0IDEzNDQgbDUzMSA1MzEgbDEzNDQgLTEzNDQgbDEzNDQgMTM0NCBsNTMxIC01MzEgbC0xMzQ0IC0xMzQ0IGwxMzQ0IC0xMzQ0IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNvbmZpcm0iIHVuaWNvZGU9IiYjeGVhMDg7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJpbmZvIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTI0MjIgNDY4OCBxLTExMSAwIC0yMTMgLTQzIHEtOTggLTQyIC0xNzQgLTExNy41IHEtNzYgLTc1LjUgLTExNyAtMTc0LjUgcS00MyAtMTAxIC00MyAtMjEyLjUgcTAgLTExMS41IDQzIC0yMTIuNSBxNDEgLTk4IDExNyAtMTc0IHE3NiAtNzYgMTc0IC0xMTcgcTEwMiAtNDMgMjEzIC00MyBxMTExIDAgMjEzIDQzIHE5OCA0MSAxNzMuNSAxMTcgcTc1LjUgNzYgMTE3LjUgMTc0IHE0MyAxMDEgNDMgMjEyLjUgcTAgMTExLjUgLTQzIDIxMi41IHEtNDIgOTkgLTExNy41IDE3NC41IHEtNzUuNSA3NS41IC0xNzMuNSAxMTcuNSBxLTEwMiA0MyAtMjEzIDQzIFpNMTU2MyAzMTI1IHEtODYgMCAtMTU4IC00MyBxLTcxIC00MSAtMTEyIC0xMTIgcS00MyAtNzIgLTQzIC0xNTcuNSBxMCAtODUuNSA0MyAtMTU3LjUgcTQxIC03MSAxMTIgLTExMiBxNzIgLTQzIDE1OCAtNDMgbDYyNSAwIGwwIC0xNTYyIGwtNjI1IDAgcS04NiAwIC0xNTggLTQzIHEtNzEgLTQxIC0xMTIgLTExMiBxLTQzIC03MyAtNDMgLTE1OCBxMCAtODUgNDMgLTE1OCBxNDEgLTcxIDExMiAtMTEyIHE3MiAtNDMgMTU4IC00MiBsMTg3NSAwIHE4NSAwIDE1NyA0MiBxNzEgNDEgMTEyIDExMiBxNDMgNzMgNDMgMTU4IHEwIDg1IC00MyAxNTggcS00MSA3MSAtMTEyIDExMiBxLTcyIDQzIC0xNTcgNDMgbC02MjUgMCBsMCAxODc1IHEwIDg1IC00MyAxNTcgcS00MSA3MSAtMTEyIDExMiBxLTczIDQzIC0xNTggNDMgbC05MzcgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTBiOyIgZD0iTTc4MSAzMDQ3IHExMTIgMCAyMTMgLTQzIHE5OCAtNDIgMTc0IC0xMTcuNSBxNzYgLTc1LjUgMTE3IC0xNzMuNSBxNDMgLTEwMiA0MyAtMjEzIHEwIC0xMTEgLTQzIC0yMTMgcS00MSAtOTggLTExNyAtMTczLjUgcS03NiAtNzUuNSAtMTc0IC0xMTcuNSBxLTEwMSAtNDMgLTIxMi41IC00MyBxLTExMS41IDAgLTIxMy41IDQzIHEtOTggNDIgLTE3My41IDExNy41IHEtNzUuNSA3NS41IC0xMTcuNSAxNzMuNSBxLTQzIDEwMiAtNDMgMjEzIHEwIDExMSA0MyAyMTMgcTQyIDk4IDExNy41IDE3My41IHE3NS41IDc1LjUgMTczLjUgMTE3LjUgcTEwMiA0MyAyMTMgNDMgWk0yNTAwIDMwNDcgcTExMSAwIDIxMyAtNDMgcTk4IC00MiAxNzMuNSAtMTE3LjUgcTc1LjUgLTc1LjUgMTE3LjUgLTE3My41IHE0MyAtMTAyIDQzIC0yMTMgcTAgLTExMSAtNDMgLTIxMyBxLTQyIC05OCAtMTE3LjUgLTE3My41IHEtNzUuNSAtNzUuNSAtMTczLjUgLTExNy41IHEtMTAyIC00MyAtMjEzIC00MyBxLTExMSAwIC0yMTMgNDMgcS05OCA0MiAtMTczLjUgMTE3LjUgcS03NS41IDc1LjUgLTExNy41IDE3My41IHEtNDMgMTAyIC00MyAyMTMgcTAgMTExIDQzIDIxMyBxNDIgOTggMTE3LjUgMTczLjUgcTc1LjUgNzUuNSAxNzMuNSAxMTcuNSBxMTAyIDQzIDIxMyA0MyBaTTQyMTkgMzA0NyBxMTExIDAgMjEzIC00MyBxOTggLTQyIDE3My41IC0xMTcuNSBxNzUuNSAtNzUuNSAxMTcuNSAtMTczLjUgcTQzIC0xMDIgNDMgLTIxMyBxMCAtMTExIC00MyAtMjEzIHEtNDIgLTk4IC0xMTcuNSAtMTczLjUgcS03NS41IC03NS41IC0xNzMuNSAtMTE3LjUgcS0xMDIgLTQzIC0yMTMuNSAtNDMgcS0xMTEuNSAwIC0yMTIuNSA0MyBxLTk4IDQyIC0xNzQgMTE3LjUgcS03NiA3NS41IC0xMTcgMTczLjUgcS00MyAxMDIgLTQzIDIxMyBxMCAxMTEgNDMgMjEzIHE0MSA5OCAxMTcgMTczLjUgcTc2IDc1LjUgMTc0IDExNy41IHExMDEgNDMgMjEzIDQzIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBjOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwZDsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJ0cmlhbmdsZS1zIiB1bmljb2RlPSImI3hlYTBlOyIgZD0iTTEyNTAgMzEyNSBsMTI1MCAtMTI1MCBsMTI1MCAxMjQ4IGwtMjUwMCAyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWF3YXkiIHVuaWNvZGU9IiYjeGVhMGY7IiBkPSJNMjE1NiA0OTY5IHEtMzYwIC00NiAtNjk1IC0xOTcgcS0zMjYgLTE0NyAtNjAxIC0zODAgcS0yNzQgLTIzMSAtNDcyIC01MjggcS0yMDIgLTMwMSAtMzA5IC02NDIgcS0xMTAgLTM1MyAtMTEwIC03MjIgcTAgLTQwNiAxMjggLTc4OCBxMTIzIC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTM2OSAwIDcyMiAxMDcgcTM0MiAxMDQgNjQ0IDMwMSBxMjk4IDE5NCA1MzMgNDYzIHEyMzYgMjcwIDM4OSA1OTMgcTE1NiAzMzEgMjEyIDY5MiBxLTE4OCAtMjA0IC00MjMuNSAtMzUxIHEtMjM1LjUgLTE0NyAtNDk4LjUgLTIyNSBxLTI2OSAtODAgLTU0NyAtODAgcS0zMjIgMCAtNjI4IDEwMyBxLTI5NSA5OSAtNTQ4IDI4NiBxLTI1MSAxODQgLTQzNSA0MzUgcS0xODcgMjUzIC0yODYgNTQ4IHEtMTAzIDMwNiAtMTAzIDYyOCBxMCAyOTMgODAgNTY4IHE3OCAyNjkgMjI1LjUgNDk4LjUgcTE0Ny41IDIyOS41IDM1MC41IDQwMi41IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWRuZCIgdW5pY29kZT0iJiN4ZWExMDsiIGQ9Ik0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFpNMTU2MyAyOTY5IGwxODc1IDAgcTkxIDAgMTc4IC0zOCBxODQgLTM3IDE1MCAtMTAzIHE2NiAtNjYgMTAyIC0xNDkgcTM4IC04NyAzOCAtMTc5IHEwIC05MiAtMzggLTE3OSBxLTM2IC04MyAtMTAyIC0xNDkgcS02NiAtNjYgLTE1MCAtMTAzIHEtODcgLTM4IC0xNzggLTM4IGwtMTg3NSAwIHEtOTIgMCAtMTc5IDM4IHEtODQgMzcgLTE1MCAxMDMgcS02NiA2NiAtMTAyIDE0OSBxLTM4IDg3IC0zOCAxNzkgcTAgOTIgMzggMTc5IHEzNiA4MyAxMDIgMTQ5IHE2NiA2NiAxNTAgMTAzIHE4NyAzOCAxNzkgMzggWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtaW52aXNpYmxlIiB1bmljb2RlPSImI3hlYTExOyIgZD0iTTI1MDAgNTAwMCBxLTQwNiAwIC03ODggLTEyOCBxLTM3MCAtMTI0IC02ODYgLTM1NiBxLTMxMyAtMjI5IC01NDIgLTU0MiBxLTIzMiAtMzE2IC0zNTYgLTY4NiBxLTEyOCAtMzgyIC0xMjggLTc4OCBxMCAtNDA2IDEyOCAtNzg4IHExMjQgLTM3MCAzNTYgLTY4NiBxMjI5IC0zMTMgNTQyIC01NDIgcTMxNiAtMjMyIDY4NiAtMzU2IHEzODIgLTEyOCA3ODggLTEyOCBxNDA2IDAgNzg4IDEyOCBxMzcwIDEyNCA2ODYgMzU2IHEzMTMgMjI5IDU0MiA1NDIgcTIzMiAzMTYgMzU2IDY4NiBxMTI4IDM4MiAxMjggNzg4IHEwIDQwNiAtMTI4IDc4OCBxLTEyNCAzNzAgLTM1NiA2ODYgcS0yMjkgMzEzIC01NDIgNTQyIHEtMzE2IDIzMiAtNjg2IDM1NiBxLTM4MiAxMjggLTc4OCAxMjggWk0yNTAwIDQwMDAgcTMxMSAwIDU5MCAtMTE2IHEyNzEgLTExMiA0NzYuNSAtMzE3LjUgcTIwNS41IC0yMDUuNSAzMTcuNSAtNDc2LjUgcTExNiAtMjc5IDExNiAtNTkwIHEwIC0zMTEgLTExNiAtNTkwIHEtMTEyIC0yNzEgLTMxNy41IC00NzYuNSBxLTIwNS41IC0yMDUuNSAtNDc2LjUgLTMxNy41IHEtMjc5IC0xMTYgLTU5MCAtMTE2IHEtMzExIDAgLTU5MCAxMTYgcS0yNzEgMTEyIC00NzYuNSAzMTcuNSBxLTIwNS41IDIwNS41IC0zMTcuNSA0NzYuNSBxLTExNiAyNzkgLTExNiA1OTAgcTAgMzExIDExNiA1OTAgcTExMiAyNzEgMzE3LjUgNDc2LjUgcTIwNS41IDIwNS41IDQ3Ni41IDMxNy41IHEyNzkgMTE2IDU5MCAxMTYgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtb25saW5lIiB1bmljb2RlPSImI3hlYTEyOyIgZD0iTTE1MDAgMTUwMCBsMjAwMCAwIGwwIDIwMDAgbC0yMDAwIDAgbDAgLTIwMDAgWk0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFoiIC8+PC9mb250PjwvZGVmcz48L3N2Zz4=\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.ttf\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.ttf ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/ttf;base64,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AAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtODRjNDYxZlJlZ3VsYXJpY29uZm9udC12dWUtODRjNDYxZmljb25mb250LXZ1ZS04NGM0NjFmVmVyc2lvbiAxLjBpY29uZm9udC12dWUtODRjNDYxZkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADgANABjADQANgAxAGYAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.woff\":\n/*!*********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.woff ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff;base64,d09GRgABAAAAAA8sAAoAAAAADuQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgdOOP0WNtYXAAAAFUAAABQgAAAUIADeu4Z2x5ZgAAApgAAAf8AAAH/MdHOUxoZWFkAAAKlAAAADYAAAA2K+sX92hoZWEAAArMAAAAJAAAACQm/ROFaG10eAAACvAAAAA0AAAANGe+//9sb2NhAAALJAAAACgAAAAoDbwPZm1heHAAAAtMAAAAIAAAACABIABXbmFtZQAAC2wAAAKmAAACpm3E+VRwb3N0AAAOFAAAARYAAAEWP1S+1wAEEsoBkAAFAAAMZQ2sAAACvAxlDawAAAlgAPUFCgAAAgAFAwAAAAAAAAAAAAAQAAAAAAAAAAAAAABQZkVkAEDqAeoSE4gAAAHCE4gAAAAAAAEAAAAAAAAAAAAAACAAAAAAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAABAAEAAEAAOoS//8AAOoB//8WAAABAAAAAAAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAA6mD0MABQALAAAJAhEJBBEJAQ6m+oIFfvu6BEb6gvqCBX77ugRGD0L6gvqCATgERgRGATj6gvqCATgERgRGAAEAAAAADW4SUAAFAAAJAREJAREGGwdT93QIjAnE+K3+yAiLCIz+xwACAAAAAA/fD0MABQALAAAJAhEJBBEJAQTiBX76ggRG+7oFfgV/+oEERvu6BEYFfgV+/sj7uvu6/sgFfgV+/sj7uvu6AAEAAAAADqYSUAAFAAAJAREJARENbvitCIv3dQnEB1MBOfd093UBOAABAAAAAAY3E4gABQAAEwcJARcBlJQFcvqOlAWjE4hV9pH2kVUJxAAAAQAAAAARhw+DAAUAAAkFD8338/v7/kYFvwnHD4P38wQF/kf6QQnGAAEAAAAAERcRFwALAAAJCxEX/e36wPrA/e0FQPrAAhMFQAVAAhP6wASE/e0FQPrAAhMFQAVAAhP6wAVA/e36wAAB//8AABOTEuwAMwAAASIHDgEXFhcBISYHBgcGBwYUFxYXFhcWNyEBBgcGFxYXHgEXFhcWNzY3ATY3NicmJwEuAQpgZU9KRhASSAXX8eBNPjopJxQUFBQnKTo+TQ4g+ik3GhgDAxsZVjU3Oz46PzUH7TsVFRQVPPgTLHQS7Dk0rFlgR/oqARsYLiw5OHg4OSwuGBsC+ik1Pzs+Ojc2VhkaAwMYGTgH7DxRUE9SPAfsLTIAAAACAAAAAA6mElAAGABGAAABIgcOAQcGFBceARcWMjc+ATc2NCcuAScmASIHBgcGFBcWFxYzIREhIgcGBwYUFxYXFjchMjc2NzY0JyYnJiMhETQnJicmIwl2b2ZimCkrKymYYmbeZmKXKisrKpdiZvw2VkhHKSsrKUdIVgJx/Y9WSEcpKyspR0hWB1NVSEcpKyspR0hV/Y8rKUdJVRJQKyqXY2XfZWKYKSsrKZhiZd9lY5cqK/nlKylHSKtIRykr+eYrKUdJqklHKSsBKilHSapJRykrB1NVSEcpKwAAAwAAAAARFxEXAAMABwALAAABESERAREhEQERIRECcQ6m8VoOpvFaDqYRF/2PAnH55v2PAnH55f2PAnEAAwAAAAASngvnABgAMQBKAAABMhceARcWFAcOAQcGIicuAScmNDc+ATc2ITIXHgEXFhQHDgEHBiInLgEnJjQ3PgE3NiEyFx4BFxYUBw4BBwYiJy4BJyY0Nz4BNzYDDXBlYpgpKyspmGJl32ZilyorKyqXYmYHJm9mYpcqKysql2Jm3mZilyorKyqXYmYHJm9mYpcqKysql2Jm32VimCkrKymYYmUL5ysql2Jm3mZilyorKyqXYmbeZmKXKisrKpdiZt5mYpcqKysql2Jm3mZilyorKyqXYmbeZmKXKisrKpdiZt5mYpcqKwAAAAACAAAAAA/fD98AAwAHAAABESERIREhEQOqBOICcQTiD9/zyww188sMNQAAAAEAAAAAERcRFwACAAAJAgJxDqbxWhEX+K34rQABAAAAAA6mDDUAAgAACQIE4gTiBOIMNfseBOAAAf/gAAATaRNpADEAAAEEBQQFBAMCAwIREBMSExIFBAUEISAlJCUkExITEhMGAAUEISAlJCcmJyYDAhEQExIACGz+mP6x/rr+7f7uxsprboB76eUBOQE8AXIBfgGWAXEBYQFWAS4BKuvsmZw4vP4p/vn+8/7q/r7+zv7Z/fu4u2NnUE4BJxNpLpeT6ef+1/7T/qv+n/6P/mr+gv6O/sT+x+XofIBraMXCAQ0BDgFDAUsBacz+2k5QZ2O7uPv9AScBMgFCASUBEwENAcsAAgAAAAATiBOIACQAQAAAASAFBAUEAwIDAhATEhMSBQQFBCAlJCUkExITEhADAgMCJSQlJAEhMhceARcWFAcOAQcGIyEiJy4BJyY0Nz4BNzYJxP5q/oL+jv7E/sfl6HyAgHzo5QE5ATwBcgF+AywBfgFyATwBOeXofICAfOjl/sf+xP6O/oL6wQdTW1dUhCQmJiSEVFdb+K1cV1SEJCYmJIRUVxOIgHzo5f7H/sT+jv6C/NT+gv6O/sT+x+XofICAfOjlATkBPAFyAX4DLAF+AXIBPAE55eh8gPgRJiWEU1e4V1OEJSYmJYRTV7hXU4QlJgAAAAIAAAAAE4gTiAAkAD0AAAEgBQQFBAMCAwIQExITEgUEBQQgJSQlJBMSExIQAwIDAiUkJSQBIAUEABMSEAMCAAUEICUkAAMCEBMSACUkCcT+av6C/o7+xP7H5eh8gIB86OUBOQE8AXIBfgMsAX4BcgE8ATnl6HyAgHzo5f7H/sT+jv6C/moBNwEXAQ8Bm3B0dHD+Zf7x/un9kv7p/vH+ZXB0dHABmwEPARcTiIB86OX+x/7E/o7+gvzU/oL+jv7E/sfl6HyAgHzo5QE5ATwBcgF+AywBfgFyATwBOeXofID8GHRw/mX+8f7p/ZL+6f7x/mVwdHRwAZsBDwEXAm4BFwEPAZtwdAAAAAIAAAAAE4gTiAADACgAAAEhESEBIAUEBQQDAgMCEBMSExIFBAUEICUkJSQTEhMSEAMCAwIlJCUkBdwH0PgwA+j+av6C/o7+xP7H5eh8gIB86OUBOQE8AXIBfgMsAX4BcgE8ATnl6HyAgHzo5f7H/sT+jv6CBdwH0AXcgHzo5f7H/sT+jv6C/NT+gv6O/sT+x+XofICAfOjlATkBPAFyAX4DLAF+AXIBPAE55eh8gAAAAQAAAAEAAD/s/DtfDzz1AAsTiAAAAADc1Uf1AAAAANyEa/X/4AAAE5MTiAAAAAgAAgAAAAAAAAABAAATiAAAAAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtODRjNDYxZlJlZ3VsYXJpY29uZm9udC12dWUtODRjNDYxZmljb25mb250LXZ1ZS04NGM0NjFmVmVyc2lvbiAxLjBpY29uZm9udC12dWUtODRjNDYxZkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADgANABjADQANgAxAGYAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\");\n\n/***/ }),\n\n/***/ \"./src/functions/usernameToColor/index.js\":\n/*!************************************************!*\\\n !*** ./src/functions/usernameToColor/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _usernameToColor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./usernameToColor */ \"./src/functions/usernameToColor/usernameToColor.js\");\n/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_usernameToColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/functions/usernameToColor/usernameToColor.js\":\n/*!**********************************************************!*\\\n !*** ./src/functions/usernameToColor/usernameToColor.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ \"core-js/modules/es.string.match.js\");\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var md5__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! md5 */ \"md5\");\n/* harmony import */ var md5__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(md5__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_GenColors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/GenColors */ \"./src/utils/GenColors.js\");\n\n\n\n\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n * @param {string} username Display name or user id to generate from\n * @returns {Object} the rgb colors as {r:255, g:255, b:255}\n */\n\nvar usernameToColor = function usernameToColor(username) {\n // Normalize hash\n var hash = username.toLowerCase(); // Already a md5 hash?\n\n if (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n hash = md5__WEBPACK_IMPORTED_MODULE_3___default()(hash);\n }\n\n hash = hash.replace(/[^0-9a-f]/g, '');\n var steps = 6;\n var finalPalette = Object(_utils_GenColors__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(steps); // Convert a string to an integer evenly\n\n function hashToInt(hash, maximum) {\n var finalInt = 0;\n var result = []; // Splitting evenly the string\n\n for (var i = 0; i < hash.length; i++) {\n // chars in md5 goes up to f, hex:16\n result.push(parseInt(hash.charAt(i), 16) % 16);\n } // Adds up all results\n\n\n for (var j in result) {\n finalInt += result[j];\n } // chars in md5 goes up to f, hex:16\n // make sure we're always using int in our operation\n\n\n return parseInt(parseInt(finalInt, 10) % maximum, 10);\n }\n\n return finalPalette[hashToInt(hash, steps * 3)];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (usernameToColor);\n\n/***/ }),\n\n/***/ \"./src/l10n.js\":\n/*!*********************!*\\\n !*** ./src/l10n.js ***!\n \\*********************/\n/*! exports provided: t, n */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return t; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return n; });\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n/dist/gettext */ \"@nextcloud/l10n/dist/gettext\");\n/* harmony import */ var _nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar gtBuilder = Object(_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__[\"getGettextBuilder\"])().detectLocale(); // Decompress Translations to gettext format and add to gtBuilder\n\n[{\"locale\":\"br\",\"translations\":{\"{tag} (invisible)\":\"{tag} (diwelus)\",\"{tag} (restricted)\":\"{tag} (bevennet)\",\"Actions\":\"Oberioù\",\"Activities\":\"Oberiantizoù\",\"Animals & Nature\":\"Loened & Natur\",\"Choose\":\"Dibab\",\"Close\":\"Serriñ\",\"Custom\":\"Personelañ\",\"Flags\":\"Bannieloù\",\"Food & Drink\":\"Boued & Evajoù\",\"Frequently used\":\"Implijet alies\",\"Next\":\"Da heul\",\"No emoji found\":\"Emoji ebet kavet\",\"No results\":\"Disoc'h ebet\",\"Objects\":\"Traoù\",\"Pause slideshow\":\"Arsav an diaporama\",\"People & Body\":\"Tud & Korf\",\"Pick an emoji\":\"Choaz un emoji\",\"Previous\":\"A-raok\",\"Search\":\"Klask\",\"Search results\":\"Disoc'hoù an enklask\",\"Select a tag\":\"Choaz ur c'hlav\",\"Settings\":\"Arventennoù\",\"Smileys & Emotion\":\"Smileyioù & Fromoù\",\"Start slideshow\":\"Kregiñ an diaporama\",\"Symbols\":\"Arouezioù\",\"Travel & Places\":\"Beaj & Lec'hioù\",\"Unable to search the group\":\"Dibosupl eo klask ar strollad\"}},{\"locale\":\"ca\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringit)\",\"Actions\":\"Accions\",\"Activities\":\"Activitats\",\"Animals & Nature\":\"Animals i natura\",\"Choose\":\"Tria\",\"Close\":\"Tanca\",\"Custom\":\"Personalitzat\",\"Flags\":\"Marques\",\"Food & Drink\":\"Menjar i begudes\",\"Frequently used\":\"Utilitzats recentment\",\"Message limit of {count} characters reached\":\"S'ha arribat al límit de {count} caràcters per missatge\",\"Next\":\"Següent\",\"No emoji found\":\"No s'ha trobat cap emoji\",\"No results\":\"Sense resultats\",\"Objects\":\"Objectes\",\"Pause slideshow\":\"Atura la presentació\",\"People & Body\":\"Persones i cos\",\"Pick an emoji\":\"Trieu un emoji\",\"Previous\":\"Anterior\",\"Search\":\"Cerca\",\"Search results\":\"Resultats de cerca\",\"Select a tag\":\"Selecciona una etiqueta\",\"Settings\":\"Paràmetres\",\"Settings navigation\":\"Navegació d'opcions\",\"Smileys & Emotion\":\"Cares i emocions\",\"Start slideshow\":\"Inicia la presentació\",\"Symbols\":\"Símbols\",\"Travel & Places\":\"Viatges i llocs\",\"Unable to search the group\":\"No es pot cercar el grup\",\"Write message, @ to mention someone …\":\"Escriu un missatge, @ per mencionar algú...\"}},{\"locale\":\"cs_CZ\",\"translations\":{\"{tag} (invisible)\":\"{tag} (neviditelné)\",\"{tag} (restricted)\":\"{tag} (omezené)\",\"Actions\":\"Akce\",\"Activities\":\"Aktivity\",\"Animals & Nature\":\"Zvířata a příroda\",\"Choose\":\"Zvolit\",\"Close\":\"Zavřít\",\"Custom\":\"Uživatelsky určené\",\"External documentation for {title}\":\"Externí dokumentace k {title}\",\"Flags\":\"Příznaky\",\"Food & Drink\":\"Jídlo a pití\",\"Frequently used\":\"Často používané\",\"Message limit of {count} characters reached\":\"Dosaženo limitu počtu ({count}) znaků zprávy\",\"Next\":\"Následující\",\"No emoji found\":\"Nenalezeno žádné emoji\",\"No results\":\"Nic nenalezeno\",\"Objects\":\"Objekty\",\"Pause slideshow\":\"Pozastavit prezentaci\",\"People & Body\":\"Lidé a tělo\",\"Pick an emoji\":\"Vybrat emoji\",\"Previous\":\"Předchozí\",\"Search\":\"Hledat\",\"Search results\":\"Výsledky hledání\",\"Select a tag\":\"Vybrat štítek\",\"Settings\":\"Nastavení\",\"Settings navigation\":\"Pohyb po nastavení\",\"Smileys & Emotion\":\"Úsměvy a emoce\",\"Start slideshow\":\"Spustit prezentaci\",\"Submit\":\"Odeslat\",\"Symbols\":\"Symboly\",\"Travel & Places\":\"Cestování a místa\",\"Unable to search the group\":\"Nedaří se hledat skupinu\",\"Write message, @ to mention someone …\":\"Pište zprávu, pokud chcete někoho zmínit, použijte @ …\"}},{\"locale\":\"da\",\"translations\":{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (begrænset)\",\"Actions\":\"Handlinger\",\"Activities\":\"Aktiviteter\",\"Animals & Nature\":\"Dyr & Natur\",\"Choose\":\"Vælg\",\"Close\":\"Luk\",\"Custom\":\"Brugerdefineret\",\"Flags\":\"Flag\",\"Food & Drink\":\"Mad & Drikke\",\"Frequently used\":\"Ofte brugt\",\"Message limit of {count} characters reached\":\"Begrænsning på {count} tegn er nået\",\"Next\":\"Videre\",\"No emoji found\":\"Ingen emoji fundet\",\"No results\":\"Ingen resultater\",\"Objects\":\"Objekter\",\"Pause slideshow\":\"Suspender fremvisning\",\"People & Body\":\"Mennesker & Menneskekroppen\",\"Pick an emoji\":\"Vælg en emoji\",\"Previous\":\"Forrige\",\"Search\":\"Søg\",\"Search results\":\"Søgeresultater\",\"Select a tag\":\"Vælg et mærke\",\"Settings\":\"Indstillinger\",\"Settings navigation\":\"Naviger i indstillinger\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start fremvisning\",\"Symbols\":\"Symboler\",\"Travel & Places\":\"Rejser & Rejsemål\",\"Unable to search the group\":\"Kan ikke søge på denne gruppe\",\"Write message, @ to mention someone …\":\"Skriv i meddelelse, @ for at nævne nogen …\"}},{\"locale\":\"de\",\"translations\":{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",\"Actions\":\"Aktionen\",\"Activities\":\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Choose\":\"Auswählen\",\"Close\":\"Schließen\",\"Custom\":\"Benutzerdefiniert\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",\"Flags\":\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"Next\":\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",\"Objects\":\"Gegenstände\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Previous\":\"Vorherige\",\"Search\":\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",\"Settings\":\"Einstellungen\",\"Settings navigation\":\"Einstellungen-Navigation\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",\"Submit\":\"Einreichen\",\"Symbols\":\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Unable to search the group\":\"Die Gruppe konnte nicht durchsucht werden\",\"Write message, @ to mention someone …\":\"Nachricht schreiben, @ um jemanden zu erwähnen ...\"}},{\"locale\":\"de_DE\",\"translations\":{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",\"Actions\":\"Aktionen\",\"Activities\":\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Choose\":\"Auswählen\",\"Close\":\"Schließen\",\"Custom\":\"Benutzerdefiniert\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",\"Flags\":\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"Next\":\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",\"Objects\":\"Gegenstände\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Previous\":\"Vorherige\",\"Search\":\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",\"Settings\":\"Einstellungen\",\"Settings navigation\":\"Einstellungen-Navigation\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",\"Submit\":\"Einreichen\",\"Symbols\":\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Unable to search the group\":\"Die Gruppe kann nicht durchsucht werden\",\"Write message, @ to mention someone …\":\"Nachricht schreiben, @ um jemanden zu erwähnen ...\"}},{\"locale\":\"el\",\"translations\":{\"{tag} (invisible)\":\"{tag} (αόρατο)\",\"{tag} (restricted)\":\"{tag} (περιορισμένο)\",\"Actions\":\"Ενέργειες\",\"Activities\":\"Δραστηριότητες\",\"Animals & Nature\":\"Ζώα & Φύση\",\"Choose\":\"Επιλογή\",\"Close\":\"Κλείσιμο\",\"Custom\":\"Προσαρμογή\",\"Flags\":\"Σημαίες\",\"Food & Drink\":\"Φαγητό & Ποτό\",\"Frequently used\":\"Συχνά χρησιμοποιούμενο\",\"Next\":\"Επόμενο\",\"No emoji found\":\"Δεν βρέθηκε emoji\",\"No results\":\"Κανένα αποτέλεσμα\",\"Objects\":\"Αντικείμενα\",\"Pause slideshow\":\"Παύση προβολής διαφανειών\",\"People & Body\":\"Άνθρωποι & Σώμα\",\"Pick an emoji\":\"Επιλέξτε ένα emoji\",\"Previous\":\"Προηγούμενο\",\"Search\":\"Αναζήτηση\",\"Search results\":\"Αποτελέσματα αναζήτησης\",\"Select a tag\":\"Επιλογή ετικέτας\",\"Settings\":\"Ρυθμίσεις\",\"Smileys & Emotion\":\"Φατσούλες & Συναίσθημα\",\"Start slideshow\":\"Έναρξη προβολής διαφανειών\",\"Symbols\":\"Σύμβολα\",\"Travel & Places\":\"Ταξίδια & Τοποθεσίες\",\"Unable to search the group\":\"Δεν είναι δυνατή η αναζήτηση της ομάδας\"}},{\"locale\":\"eo\",\"translations\":{\"{tag} (invisible)\":\"{tag} (kaŝita)\",\"{tag} (restricted)\":\"{tag} (limigita)\",\"Actions\":\"Agoj\",\"Activities\":\"Aktiveco\",\"Animals & Nature\":\"Bestoj & Naturo\",\"Choose\":\"Elektu\",\"Close\":\"Fermu\",\"Custom\":\"Propra\",\"Flags\":\"Flagoj\",\"Food & Drink\":\"Manĝaĵo & Trinkaĵo\",\"Frequently used\":\"Ofte uzataj\",\"Message limit of {count} characters reached\":\"La limo je {count} da literoj atingita\",\"Next\":\"Sekva\",\"No emoji found\":\"La emoĝio forestas\",\"No results\":\"La rezulto forestas\",\"Objects\":\"Objektoj\",\"Pause slideshow\":\"Payzi bildprezenton\",\"People & Body\":\"Homoj & Korpo\",\"Pick an emoji\":\"Elekti emoĝion \",\"Previous\":\"Antaŭa\",\"Search\":\"Serĉi\",\"Search results\":\"Serĉrezultoj\",\"Select a tag\":\"Elektu etikedon\",\"Settings\":\"Agordo\",\"Settings navigation\":\"Agorda navigado\",\"Smileys & Emotion\":\"Ridoj kaj Emocioj\",\"Start slideshow\":\"Komenci bildprezenton\",\"Symbols\":\"Signoj\",\"Travel & Places\":\"Vojaĵoj & Lokoj\",\"Unable to search the group\":\"Ne eblas serĉi en la grupo\",\"Write message, @ to mention someone …\":\"Mesaĝi, uzu @ por mencii iun ...\"}},{\"locale\":\"es\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringido)\",\"Actions\":\"Acciones\",\"Activities\":\"Actividades\",\"Animals & Nature\":\"Animales y naturaleza\",\"Choose\":\"Elegir\",\"Close\":\"Cerrar\",\"Custom\":\"Personalizado\",\"Flags\":\"Banderas\",\"Food & Drink\":\"Comida y bebida\",\"Frequently used\":\"Usado con frecuenca\",\"Message limit of {count} characters reached\":\"El mensaje ha alcanzado el límite de {count} caracteres\",\"Next\":\"Siguiente\",\"No emoji found\":\"No hay ningún emoji\",\"No results\":\" Ningún resultado\",\"Objects\":\"Objetos\",\"Pause slideshow\":\"Pausar la presentación \",\"People & Body\":\"Personas y cuerpos\",\"Pick an emoji\":\"Elegir un emoji\",\"Previous\":\"Anterior\",\"Search\":\"Buscar\",\"Search results\":\"Resultados de la búsqueda\",\"Select a tag\":\"Seleccione una etiqueta\",\"Settings\":\"Ajustes\",\"Settings navigation\":\"Navegación por ajustes\",\"Smileys & Emotion\":\"Smileys y emoticonos\",\"Start slideshow\":\"Iniciar la presentación\",\"Symbols\":\"Símbolos\",\"Travel & Places\":\"Viajes y lugares\",\"Unable to search the group\":\"No es posible buscar en el grupo\",\"Write message, @ to mention someone …\":\"Escriba un mensaje, @ para mencionar a alguien...\"}},{\"locale\":\"eu\",\"translations\":{\"{tag} (invisible)\":\"{tag} (ikusezina)\",\"{tag} (restricted)\":\"{tag} (mugatua)\",\"Choose\":\"Aukeratu\",\"Close\":\"Itxi\",\"Next\":\"Hurrengoa\",\"No results\":\"Emaitzarik ez\",\"Pause slideshow\":\"Pausatu diaporama\",\"Previous\":\"Aurrekoa\",\"Select a tag\":\"Hautatu etiketa bat\",\"Settings\":\"Ezarpenak\",\"Start slideshow\":\"Hasi diaporama\"}},{\"locale\":\"fi_FI\",\"translations\":{\"{tag} (invisible)\":\"{tag} (näkymätön)\",\"{tag} (restricted)\":\"{tag} (rajoitettu)\",\"Actions\":\"Toiminnot\",\"Activities\":\"Aktiviteetit\",\"Animals & Nature\":\"Eläimet & luonto\",\"Choose\":\"Valitse\",\"Close\":\"Sulje\",\"Custom\":\"Mukautettu\",\"Flags\":\"Liput\",\"Food & Drink\":\"Ruoka & juoma\",\"Frequently used\":\"Usein käytetyt\",\"Message limit of {count} characters reached\":\"Viestin maksimimerkkimäärä {count} täynnä \",\"Next\":\"Seuraava\",\"No emoji found\":\"Emojia ei löytynyt\",\"No results\":\"Ei tuloksia\",\"Objects\":\"Esineet & asiat\",\"Pause slideshow\":\"Keskeytä diaesitys\",\"People & Body\":\"Ihmiset & keho\",\"Pick an emoji\":\"Valitse emoji\",\"Previous\":\"Edellinen\",\"Search\":\"Etsi\",\"Search results\":\"Hakutulokset\",\"Select a tag\":\"Valitse tagi\",\"Settings\":\"Asetukset\",\"Settings navigation\":\"Asetusnavigaatio\",\"Smileys & Emotion\":\"Hymiöt ja & tunteet\",\"Start slideshow\":\"Aloita diaesitys\",\"Symbols\":\"Symbolit\",\"Travel & Places\":\"Matkustus & kohteet\",\"Unable to search the group\":\"Ryhmää ei voi hakea\",\"Write message, @ to mention someone …\":\"Kirjoita viesti, @ mainitaksesi jonkun...\"}},{\"locale\":\"fr\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restreint)\",\"Actions\":\"Actions\",\"Activities\":\"Activités\",\"Animals & Nature\":\"Animaux & Nature\",\"Choose\":\"Choisir\",\"Close\":\"Fermer\",\"Custom\":\"Personnalisé\",\"Flags\":\"Drapeaux\",\"Food & Drink\":\"Nourriture & Boissons\",\"Frequently used\":\"Utilisés fréquemment\",\"Message limit of {count} characters reached\":\"Limite de messages de {count} caractères atteinte\",\"Next\":\"Suivant\",\"No emoji found\":\"Pas d’émoji trouvé\",\"No results\":\"Aucun résultat\",\"Objects\":\"Objets\",\"Pause slideshow\":\"Mettre le diaporama en pause\",\"People & Body\":\"Personnes & Corps\",\"Pick an emoji\":\"Choisissez un émoji\",\"Previous\":\"Précédent\",\"Search\":\"Chercher\",\"Search results\":\"Résultats de recherche\",\"Select a tag\":\"Sélectionnez une balise\",\"Settings\":\"Paramètres\",\"Settings navigation\":\"Navigation dans les paramètres\",\"Smileys & Emotion\":\"Smileys & Émotions\",\"Start slideshow\":\"Démarrer le diaporama\",\"Symbols\":\"Symboles\",\"Travel & Places\":\"Voyage & Lieux\",\"Unable to search the group\":\"Impossible de chercher le groupe\",\"Write message, @ to mention someone …\":\"Écrivez un message, @ pour mentionner quelqu'un…\"}},{\"locale\":\"gl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisíbel)\",\"{tag} (restricted)\":\"{tag} (restrinxido)\",\"Actions\":\"Accións\",\"Activities\":\"Actividades\",\"Animals & Nature\":\"Animais e natureza\",\"Choose\":\"Escoller\",\"Close\":\"Pechar\",\"Custom\":\"Personalizado\",\"Flags\":\"Bandeiras\",\"Food & Drink\":\"Comida e bebida\",\"Frequently used\":\"Usado con frecuencia\",\"Message limit of {count} characters reached\":\"Acadouse o límite de {count} caracteres por mensaxe\",\"Next\":\"Seguinte\",\"No emoji found\":\"Non se atopou ningún «emoji»\",\"No results\":\"Sen resultados\",\"Objects\":\"Obxectos\",\"Pause slideshow\":\"Pausar o diaporama\",\"People & Body\":\"Persoas e corpo\",\"Pick an emoji\":\"Escolla un «emoji»\",\"Previous\":\"Anterir\",\"Search\":\"Buscar\",\"Search results\":\"Resultados da busca\",\"Select a tag\":\"Seleccione unha etiqueta\",\"Settings\":\"Axustes\",\"Settings navigation\":\"Navegación de axustes\",\"Smileys & Emotion\":\"Sorrisos e emocións\",\"Start slideshow\":\"Iniciar o diaporama\",\"Symbols\":\"Símbolos\",\"Travel & Places\":\"Viaxes e lugares\",\"Unable to search the group\":\"Non foi posíbel buscar o grupo\",\"Write message, @ to mention someone …\":\"Escriba a mensaxe, @ para mencionar a alguén…\"}},{\"locale\":\"he\",\"translations\":{\"{tag} (invisible)\":\"{tag} (נסתר)\",\"{tag} (restricted)\":\"{tag} (מוגבל)\",\"Actions\":\"פעולות\",\"Activities\":\"פעילויות\",\"Animals & Nature\":\"חיות וטבע\",\"Choose\":\"בחירה\",\"Close\":\"סגירה\",\"Custom\":\"בהתאמה אישית\",\"Flags\":\"דגלים\",\"Food & Drink\":\"מזון ומשקאות\",\"Frequently used\":\"בשימוש תדיר\",\"Next\":\"הבא\",\"No emoji found\":\"לא נמצא אמוג׳י\",\"No results\":\"אין תוצאות\",\"Objects\":\"חפצים\",\"Pause slideshow\":\"השהיית מצגת\",\"People & Body\":\"אנשים וגוף\",\"Pick an emoji\":\"נא לבחור אמוג׳י\",\"Previous\":\"הקודם\",\"Search\":\"חיפוש\",\"Search results\":\"תוצאות חיפוש\",\"Select a tag\":\"בחירת תגית\",\"Settings\":\"הגדרות\",\"Smileys & Emotion\":\"חייכנים ורגשונים\",\"Start slideshow\":\"התחלת המצגת\",\"Symbols\":\"סמלים\",\"Travel & Places\":\"טיולים ומקומות\",\"Unable to search the group\":\"לא ניתן לחפש בקבוצה\"}},{\"locale\":\"hu_HU\",\"translations\":{\"{tag} (invisible)\":\"{tag} (láthatatlan)\",\"{tag} (restricted)\":\"{tag} (korlátozott)\",\"Actions\":\"Műveletek\",\"Activities\":\"Tevékenységek\",\"Animals & Nature\":\"Állatok és természet\",\"Choose\":\"Válassszon\",\"Close\":\"Bezárás\",\"Custom\":\"Egyéni\",\"Flags\":\"Zászló\",\"Food & Drink\":\"Étel és ital\",\"Frequently used\":\"Gyakran használt\",\"Message limit of {count} characters reached\":\"{count} karakteres üzenetkorlát elérve\",\"Next\":\"Következő\",\"No emoji found\":\"Nem található emodzsi\",\"No results\":\"Nincs találat\",\"Objects\":\"Tárgyak\",\"Pause slideshow\":\"Diavetítés szüneteltetése\",\"People & Body\":\"Emberek és test\",\"Pick an emoji\":\"Válasszon egy emodzsit\",\"Previous\":\"Előző\",\"Search\":\"Keresés\",\"Search results\":\"Találatok\",\"Select a tag\":\"Válasszon címkét\",\"Settings\":\"Beállítások\",\"Settings navigation\":\"Navigáció a beállításokban\",\"Smileys & Emotion\":\"Mosolyok és érzelmek\",\"Start slideshow\":\"Diavetítés indítása\",\"Symbols\":\"Szimbólumok\",\"Travel & Places\":\"Utazás és helyek\",\"Unable to search the group\":\"A csoport nem kereshető\",\"Write message, @ to mention someone …\":\"Írjon üzenetet, @ valaki megemlítéséhez…\"}},{\"locale\":\"is\",\"translations\":{\"{tag} (invisible)\":\"{tag} (ósýnilegt)\",\"{tag} (restricted)\":\"{tag} (takmarkað)\",\"Actions\":\"Aðgerðir\",\"Activities\":\"Aðgerðir\",\"Animals & Nature\":\"Dýr og náttúra\",\"Choose\":\"Velja\",\"Close\":\"Loka\",\"Custom\":\"Sérsniðið\",\"Flags\":\"Flögg\",\"Food & Drink\":\"Matur og drykkur\",\"Frequently used\":\"Oftast notað\",\"Next\":\"Næsta\",\"No emoji found\":\"Ekkert tjáningartákn fannst\",\"No results\":\"Engar niðurstöður\",\"Objects\":\"Hlutir\",\"Pause slideshow\":\"Gera hlé á skyggnusýningu\",\"People & Body\":\"Fólk og líkami\",\"Pick an emoji\":\"Veldu tjáningartákn\",\"Previous\":\"Fyrri\",\"Search\":\"Leita\",\"Search results\":\"Leitarniðurstöður\",\"Select a tag\":\"Veldu merki\",\"Settings\":\"Stillingar\",\"Smileys & Emotion\":\"Broskallar og tilfinningar\",\"Start slideshow\":\"Byrja skyggnusýningu\",\"Symbols\":\"Tákn\",\"Travel & Places\":\"Staðir og ferðalög\",\"Unable to search the group\":\"Get ekki leitað í hópnum\"}},{\"locale\":\"it\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisibile)\",\"{tag} (restricted)\":\"{tag} (limitato)\",\"Actions\":\"Azioni\",\"Activities\":\"Attività\",\"Animals & Nature\":\"Animali e natura\",\"Choose\":\"Scegli\",\"Close\":\"Chiudi\",\"Custom\":\"Personalizzato\",\"External documentation for {title}\":\"Documentazione esterna per {title}\",\"Flags\":\"Bandiere\",\"Food & Drink\":\"Cibo e bevande\",\"Frequently used\":\"Usati di frequente\",\"Message limit of {count} characters reached\":\"Limite dei messaggi di {count} caratteri raggiunto\",\"Next\":\"Successivo\",\"No emoji found\":\"Nessun emoji trovato\",\"No results\":\"Nessun risultato\",\"Objects\":\"Oggetti\",\"Pause slideshow\":\"Presentazione in pausa\",\"People & Body\":\"Persone e corpo\",\"Pick an emoji\":\"Scegli un emoji\",\"Previous\":\"Precedente\",\"Search\":\"Cerca\",\"Search results\":\"Risultati di ricerca\",\"Select a tag\":\"Seleziona un'etichetta\",\"Settings\":\"Impostazioni\",\"Settings navigation\":\"Navigazione delle impostazioni\",\"Smileys & Emotion\":\"Faccine ed emozioni\",\"Start slideshow\":\"Avvia presentazione\",\"Submit\":\"Invia\",\"Symbols\":\"Simboli\",\"Travel & Places\":\"Viaggi e luoghi\",\"Unable to search the group\":\"Impossibile cercare il gruppo\",\"Write message, @ to mention someone …\":\"Scrivi messaggio, @ per menzionare qualcuno…\"}},{\"locale\":\"ja_JP\",\"translations\":{\"{tag} (invisible)\":\"{タグ} (不可視)\",\"{tag} (restricted)\":\"{タグ} (制限付)\",\"Actions\":\"操作\",\"Activities\":\"アクティビティ\",\"Animals & Nature\":\"動物と自然\",\"Choose\":\"選択\",\"Close\":\"閉じる\",\"Custom\":\"カスタム\",\"Flags\":\"国旗\",\"Food & Drink\":\"食べ物と飲み物\",\"Frequently used\":\"よく使うもの\",\"Message limit of {count} characters reached\":\"{count} 文字のメッセージ上限に達しています\",\"Next\":\"次\",\"No emoji found\":\"絵文字が見つかりません\",\"No results\":\"なし\",\"Objects\":\"物\",\"Pause slideshow\":\"スライドショーを一時停止\",\"People & Body\":\"様々な人と体の部位\",\"Pick an emoji\":\"絵文字を選択\",\"Previous\":\"前\",\"Search\":\"検索\",\"Search results\":\"検索結果\",\"Select a tag\":\"タグを選択\",\"Settings\":\"設定\",\"Settings navigation\":\"ナビゲーション設定\",\"Smileys & Emotion\":\"笑顔と気持ち\",\"Start slideshow\":\"スライドショーを開始\",\"Symbols\":\"記号\",\"Travel & Places\":\"旅行と場所\",\"Unable to search the group\":\"グループを検索できません\",\"Write message, @ to mention someone …\":\"メッセージを書く、@ で通知します。\"}},{\"locale\":\"lt_LT\",\"translations\":{\"{tag} (invisible)\":\"{tag} (nematoma)\",\"{tag} (restricted)\":\"{tag} (apribota)\",\"Actions\":\"Veiksmai\",\"Activities\":\"Veiklos\",\"Animals & Nature\":\"Gyvūnai ir gamta\",\"Choose\":\"Pasirinkti\",\"Close\":\"Užverti\",\"Custom\":\"Tinkinti\",\"External documentation for {title}\":\"Išorinė {title} dokumentacija\",\"Flags\":\"Vėliavos\",\"Food & Drink\":\"Maistas ir gėrimai\",\"Frequently used\":\"Dažniausiai naudoti\",\"Message limit of {count} characters reached\":\"Pasiekta {count} simbolių žinutės riba\",\"Next\":\"Kitas\",\"No emoji found\":\"Nerasta jaustukų\",\"No results\":\"Nėra rezultatų\",\"Objects\":\"Objektai\",\"Pause slideshow\":\"Pristabdyti skaidrių rodymą\",\"People & Body\":\"Žmonės ir kūnas\",\"Pick an emoji\":\"Pasirinkti jaustuką\",\"Previous\":\"Ankstesnis\",\"Search\":\"Ieškoti\",\"Search results\":\"Paieškos rezultatai\",\"Select a tag\":\"Pasirinkti žymę\",\"Settings\":\"Nustatymai\",\"Settings navigation\":\"Naršymas nustatymuose\",\"Smileys & Emotion\":\"Šypsenos ir emocijos\",\"Start slideshow\":\"Pradėti skaidrių rodymą\",\"Submit\":\"Pateikti\",\"Symbols\":\"Simboliai\",\"Travel & Places\":\"Kelionės ir vietos\",\"Unable to search the group\":\"Nepavyko atlikti paiešką grupėje\",\"Write message, @ to mention someone …\":\"Rašykite žinutę, naudokite @ norėdami kažką paminėti…\"}},{\"locale\":\"lv\",\"translations\":{\"{tag} (invisible)\":\"{tag} (neredzams)\",\"{tag} (restricted)\":\"{tag} (ierobežots)\",\"Choose\":\"Izvēlēties\",\"Close\":\"Aizvērt\",\"Next\":\"Nākamais\",\"No results\":\"Nav rezultātu\",\"Pause slideshow\":\"Pauzēt slaidrādi\",\"Previous\":\"Iepriekšējais\",\"Select a tag\":\"Izvēlēties birku\",\"Settings\":\"Iestatījumi\",\"Start slideshow\":\"Sākt slaidrādi\"}},{\"locale\":\"mk\",\"translations\":{\"{tag} (invisible)\":\"{tag} (невидливо)\",\"{tag} (restricted)\":\"{tag} (ограничено)\",\"Actions\":\"Акции\",\"Activities\":\"Активности\",\"Animals & Nature\":\"Животни & Природа\",\"Choose\":\"Избери\",\"Close\":\"Затвори\",\"Custom\":\"Прилагодени\",\"Flags\":\"Знамиња\",\"Food & Drink\":\"Храна & Пијалоци\",\"Frequently used\":\"Најчесто користени\",\"Message limit of {count} characters reached\":\"Ограничувањето на должината на пораката од {count} карактери е надминато\",\"Next\":\"Следно\",\"No emoji found\":\"Не се пронајдени емотикони\",\"No results\":\"Нема резултати\",\"Objects\":\"Објекти\",\"Pause slideshow\":\"Пузирај слајдшоу\",\"People & Body\":\"Луѓе & Тело\",\"Pick an emoji\":\"Избери емотикон\",\"Previous\":\"Предходно\",\"Search\":\"Барај\",\"Search results\":\"Резултати од барувањето\",\"Select a tag\":\"Избери ознака\",\"Settings\":\"Параметри\",\"Settings navigation\":\"Параметри за навигација\",\"Smileys & Emotion\":\"Смешковци & Емотикони\",\"Start slideshow\":\"Стартувај слајдшоу\",\"Symbols\":\"Симболи\",\"Travel & Places\":\"Патувања & Места\",\"Unable to search the group\":\"Неможе да се принајде групата\",\"Write message, @ to mention someone …\":\"Напиши порака, @ за да спомнеш некој …\"}},{\"locale\":\"nb_NO\",\"translations\":{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (beskyttet)\",\"Actions\":\"Handlinger\",\"Activities\":\"Aktiviteter\",\"Animals & Nature\":\"Dyr og natur\",\"Choose\":\"Velg\",\"Close\":\"Lukk\",\"Custom\":\"Selvvalgt\",\"Flags\":\"Flagg\",\"Food & Drink\":\"Mat og drikke\",\"Frequently used\":\"Ofte brukt\",\"Next\":\"Neste\",\"No emoji found\":\"Fant ingen emoji\",\"No results\":\"Ingen resultater\",\"Objects\":\"Objekter\",\"Pause slideshow\":\"Pause lysbildefremvisning\",\"People & Body\":\"Mennesker og kropp\",\"Pick an emoji\":\"Velg en emoji\",\"Previous\":\"Forrige\",\"Search\":\"Søk\",\"Search results\":\"Søkeresultater\",\"Select a tag\":\"Velg en merkelapp\",\"Settings\":\"Innstillinger\",\"Smileys & Emotion\":\"Smilefjes og følelser\",\"Start slideshow\":\"Start lysbildefremvisning\",\"Symbols\":\"Symboler\",\"Travel & Places\":\"Reise og steder\",\"Unable to search the group\":\"Kunne ikke søke i gruppen\"}},{\"locale\":\"nl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (onzichtbaar)\",\"{tag} (restricted)\":\"{tag} (beperkt)\",\"Actions\":\"Acties\",\"Activities\":\"Activiteiten\",\"Animals & Nature\":\"Dieren & Natuur\",\"Choose\":\"Kies\",\"Close\":\"Sluiten\",\"Custom\":\"Aangepast\",\"Flags\":\"Vlaggen\",\"Food & Drink\":\"Eten & Drinken\",\"Frequently used\":\"Vaak gebruikt\",\"Message limit of {count} characters reached\":\"Berichtlengte van {count} karakters bereikt\",\"Next\":\"Volgende\",\"No emoji found\":\"Geen emoji gevonden\",\"No results\":\"Geen resultaten\",\"Objects\":\"Objecten\",\"Pause slideshow\":\"Pauzeer diavoorstelling\",\"People & Body\":\"Mensen & Lichaam\",\"Pick an emoji\":\"Kies een emoji\",\"Previous\":\"Vorige\",\"Search\":\"Zoeken\",\"Search results\":\"Zoekresultaten\",\"Select a tag\":\"Selecteer een label\",\"Settings\":\"Instellingen\",\"Settings navigation\":\"Instellingen navigatie\",\"Smileys & Emotion\":\"Smileys & Emotie\",\"Start slideshow\":\"Start diavoorstelling\",\"Symbols\":\"Symbolen\",\"Travel & Places\":\"Reizen & Plaatsen\",\"Unable to search the group\":\"Kan niet in de groep zoeken\",\"Write message, @ to mention someone …\":\"Schrijf een bericht, @ om iemand te noemen ...\"}},{\"locale\":\"oc\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (limit)\",\"Actions\":\"Accions\",\"Choose\":\"Causir\",\"Close\":\"Tampar\",\"Next\":\"Seguent\",\"No results\":\"Cap de resultat\",\"Pause slideshow\":\"Metre en pausa lo diaporama\",\"Previous\":\"Precedent\",\"Select a tag\":\"Seleccionar una etiqueta\",\"Settings\":\"Paramètres\",\"Start slideshow\":\"Lançar lo diaporama\"}},{\"locale\":\"pl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (niewidoczna)\",\"{tag} (restricted)\":\"{tag} (ograniczona)\",\"Actions\":\"Działania\",\"Activities\":\"Aktywność\",\"Animals & Nature\":\"Zwierzęta i natura\",\"Choose\":\"Wybierz\",\"Close\":\"Zamknij\",\"Custom\":\"Zwyczajne\",\"External documentation for {title}\":\"Dokumentacja zewnętrzna dla {title}\",\"Flags\":\"Flagi\",\"Food & Drink\":\"Jedzenie i picie\",\"Frequently used\":\"Często używane\",\"Message limit of {count} characters reached\":\"Przekroczono limit wiadomości wynoszący {count} znaków\",\"Next\":\"Następny\",\"No emoji found\":\"Nie znaleziono emotikonów\",\"No results\":\"Brak wyników\",\"Objects\":\"Obiekty\",\"Pause slideshow\":\"Wstrzymaj pokaz slajdów\",\"People & Body\":\"Ludzie i ciało\",\"Pick an emoji\":\"Wybierz emoji\",\"Previous\":\"Poprzedni\",\"Search\":\"Szukaj\",\"Search results\":\"Wyniki wyszukiwania\",\"Select a tag\":\"Wybierz etykietę\",\"Settings\":\"Ustawienia\",\"Settings navigation\":\"Nawigacja ustawień\",\"Smileys & Emotion\":\"Buźki i emotikony\",\"Start slideshow\":\"Rozpocznij pokaz slajdów\",\"Submit\":\"Wyślij\",\"Symbols\":\"Symbole\",\"Travel & Places\":\"Podróże i miejsca\",\"Unable to search the group\":\"Nie można przeszukać grupy\",\"Write message, @ to mention someone …\":\"Napisz wiadomość, aby wspomnieć o kimś użyj @…\"}},{\"locale\":\"pt_BR\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisível)\",\"{tag} (restricted)\":\"{tag} (restrito) \",\"Actions\":\"Ações\",\"Activities\":\"Atividades\",\"Animals & Nature\":\"Animais & Natureza\",\"Choose\":\"Escolher\",\"Close\":\"Fechar\",\"Custom\":\"Personalizado\",\"External documentation for {title}\":\"Documentação externa para {title}\",\"Flags\":\"Bandeiras\",\"Food & Drink\":\"Comida & Bebida\",\"Frequently used\":\"Mais usados\",\"Message limit of {count} characters reached\":\"Limite de mensagem de {count} caracteres atingido\",\"Next\":\"Próximo\",\"No emoji found\":\"Nenhum emoji encontrado\",\"No results\":\"Sem resultados\",\"Objects\":\"Objetos\",\"Pause slideshow\":\"Pausar apresentação de slides\",\"People & Body\":\"Pessoas & Corpo\",\"Pick an emoji\":\"Escolha um emoji\",\"Previous\":\"Anterior\",\"Search\":\"Pesquisar\",\"Search results\":\"Resultados da pesquisa\",\"Select a tag\":\"Selecionar uma tag\",\"Settings\":\"Configurações\",\"Settings navigation\":\"Navegação de configurações\",\"Smileys & Emotion\":\"Smiles & Emoções\",\"Start slideshow\":\"Iniciar apresentação de slides\",\"Submit\":\"Enviar\",\"Symbols\":\"Símbolo\",\"Travel & Places\":\"Viagem & Lugares\",\"Unable to search the group\":\"Não foi possível pesquisar o grupo\",\"Write message, @ to mention someone …\":\"Escreva mensagem, @ para mencionar alguém ...\"}},{\"locale\":\"pt_PT\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisivel)\",\"{tag} (restricted)\":\"{tag} (restrito)\",\"Actions\":\"Ações\",\"Choose\":\"Escolher\",\"Close\":\"Fechar\",\"Next\":\"Seguinte\",\"No results\":\"Sem resultados\",\"Pause slideshow\":\"Pausar diaporama\",\"Previous\":\"Anterior\",\"Select a tag\":\"Selecionar uma etiqueta\",\"Settings\":\"Definições\",\"Start slideshow\":\"Iniciar diaporama\",\"Unable to search the group\":\"Não é possível pesquisar o grupo\"}},{\"locale\":\"ru\",\"translations\":{\"{tag} (invisible)\":\"{tag} (невидимое)\",\"{tag} (restricted)\":\"{tag} (ограниченное)\",\"Choose\":\"Выберите\",\"Close\":\"Закрыть\",\"Next\":\"Следующее\",\"No results\":\"Результаты отсуствуют\",\"Pause slideshow\":\"Приостановить показ слйдов\",\"Previous\":\"Предыдущее\",\"Select a tag\":\"Выберите метку\",\"Settings\":\"Параметры\",\"Start slideshow\":\"Начать показ слайдов\"}},{\"locale\":\"sk_SK\",\"translations\":{\"{tag} (invisible)\":\"{tag} (neviditeľný)\",\"{tag} (restricted)\":\"{tag} (obmedzený)\",\"Actions\":\"Akcie\",\"Activities\":\"Aktivity\",\"Animals & Nature\":\"Zvieratá a príroda\",\"Choose\":\"Vybrať\",\"Close\":\"Zatvoriť\",\"Custom\":\"Zvyk\",\"Flags\":\"Vlajky\",\"Food & Drink\":\"Jedlo a nápoje\",\"Frequently used\":\"Často používané\",\"Next\":\"Ďalší\",\"No emoji found\":\"Nenašli sa žiadne emodži\",\"No results\":\"Žiadne výsledky\",\"Objects\":\"Objekty\",\"Pause slideshow\":\"Pozastaviť prezentáciu\",\"People & Body\":\"Ľudia a telo\",\"Pick an emoji\":\"Vyberte si emodži\",\"Previous\":\"Predchádzajúci\",\"Search\":\"Hľadať\",\"Search results\":\"Výsledky vyhľadávania\",\"Select a tag\":\"Vybrať štítok\",\"Settings\":\"Nastavenia\",\"Smileys & Emotion\":\"Smajlíky a emócie\",\"Start slideshow\":\"Začať prezentáciu\",\"Symbols\":\"Symboly\",\"Travel & Places\":\"Cestovanie a miesta\",\"Unable to search the group\":\"Skupinu sa nepodarilo nájsť\"}},{\"locale\":\"sl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (nevidno)\",\"{tag} (restricted)\":\"{tag} (omejeno)\",\"Actions\":\"Dejanja\",\"Activities\":\"Dejavnosti\",\"Animals & Nature\":\"Živali in Narava\",\"Choose\":\"Izbor\",\"Close\":\"Zapri\",\"Custom\":\"Po meri\",\"External documentation for {title}\":\"Zunanja dokumentacija za {title}\",\"Flags\":\"Zastavice\",\"Food & Drink\":\"Hrana in Pijača\",\"Frequently used\":\"Pogostost uporabe\",\"Message limit of {count} characters reached\":\"Dosežena omejitev {count} znakov na sporočilo.\",\"Next\":\"Naslednji\",\"No emoji found\":\"Ni najdenih izraznih ikon\",\"No results\":\"Ni zadetkov\",\"Objects\":\"Predmeti\",\"Pause slideshow\":\"Ustavi predstavitev\",\"People & Body\":\"Ljudje in Telo\",\"Pick an emoji\":\"Izbor izrazne ikone\",\"Previous\":\"Predhodni\",\"Search\":\"Iskanje\",\"Search results\":\"Zadetki iskanja\",\"Select a tag\":\"Izbor oznake\",\"Settings\":\"Nastavitve\",\"Settings navigation\":\"Krmarjenje nastavitev\",\"Smileys & Emotion\":\"Izrazne ikone\",\"Start slideshow\":\"Začni predstavitev\",\"Submit\":\"Pošlji\",\"Symbols\":\"Simboli\",\"Travel & Places\":\"Potovanja in Kraji\",\"Unable to search the group\":\"Ni mogoče iskati po skuspini\",\"Write message, @ to mention someone …\":\"Napišite sporočilo, z @ omenite osebo ...\"}},{\"locale\":\"sv\",\"translations\":{\"{tag} (invisible)\":\"{tag} (osynlig)\",\"{tag} (restricted)\":\"{tag} (begränsad)\",\"Actions\":\"Åtgärder\",\"Activities\":\"Aktiviteter\",\"Animals & Nature\":\"Djur & Natur\",\"Choose\":\"Välj\",\"Close\":\"Stäng\",\"Custom\":\"Anpassad\",\"Flags\":\"Flaggor\",\"Food & Drink\":\"Mat & Dryck\",\"Frequently used\":\"Används ofta\",\"Message limit of {count} characters reached\":\"Meddelandegräns {count} tecken används\",\"Next\":\"Nästa\",\"No emoji found\":\"Hittade inga emojis\",\"No results\":\"Inga resultat\",\"Objects\":\"Objekt\",\"Pause slideshow\":\"Pausa bildspelet\",\"People & Body\":\"Kropp & Själ\",\"Pick an emoji\":\"Välj en emoji\",\"Previous\":\"Föregående\",\"Search\":\"Sök\",\"Search results\":\"Sökresultat\",\"Select a tag\":\"Välj en tag\",\"Settings\":\"Inställningar\",\"Settings navigation\":\"Inställningsmeny\",\"Smileys & Emotion\":\"Selfies & Känslor\",\"Start slideshow\":\"Starta bildspelet\",\"Symbols\":\"Symboler\",\"Travel & Places\":\"Resor & Sevärdigheter\",\"Unable to search the group\":\"Kunde inte söka i gruppen\",\"Write message, @ to mention someone …\":\"Skicka meddelande, skriv @ för att omnämna någon ...\"}},{\"locale\":\"tr\",\"translations\":{\"{tag} (invisible)\":\"{tag} (görünmez)\",\"{tag} (restricted)\":\"{tag} (kısıtlı)\",\"Actions\":\"İşlemler\",\"Activities\":\"Etkinlikler\",\"Animals & Nature\":\"Hayvanlar ve Doğa\",\"Choose\":\"Seçin\",\"Close\":\"Kapat\",\"Custom\":\"Özel\",\"External documentation for {title}\":\"{title} için dış belgeler\",\"Flags\":\"Bayraklar\",\"Food & Drink\":\"Yeme ve İçme\",\"Frequently used\":\"Sık kullanılanlar\",\"Message limit of {count} characters reached\":\"{count} karakter ileti sınırına ulaşıldı\",\"Next\":\"Sonraki\",\"No emoji found\":\"Herhangi bir emoji bulunamadı\",\"No results\":\"Herhangi bir sonuç bulunamadı\",\"Objects\":\"Nesneler\",\"Pause slideshow\":\"Slayt sunumunu duraklat\",\"People & Body\":\"İnsanlar ve Beden\",\"Pick an emoji\":\"Bir emoji seçin\",\"Previous\":\"Önceki\",\"Search\":\"Arama\",\"Search results\":\"Arama sonuçları\",\"Select a tag\":\"Bir etiket seçin\",\"Settings\":\"Ayarlar\",\"Settings navigation\":\"Gezinme ayarları\",\"Smileys & Emotion\":\"İfadeler ve Duygular\",\"Start slideshow\":\"Slayt sunumunu başlat\",\"Submit\":\"Gönder\",\"Symbols\":\"Simgeler\",\"Travel & Places\":\"Gezi ve Yerler\",\"Unable to search the group\":\"Grupta arama yapılamadı\",\"Write message, @ to mention someone …\":\"İletiyi yazın. Birini anmak için @ kullanın …\"}},{\"locale\":\"uk\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restricted)\",\"Actions\":\"Дії\",\"Activities\":\"Діяльність\",\"Animals & Nature\":\"Тварини та природа\",\"Choose\":\"Виберіть\",\"Close\":\"Закрити\",\"Custom\":\"Власне\",\"Flags\":\"Прапори\",\"Food & Drink\":\"Їжа та напитки\",\"Frequently used\":\"Найчастіші\",\"Next\":\"Вперед\",\"No emoji found\":\"Емоційки відсутні\",\"No results\":\"Відсутні результати\",\"Objects\":\"Об'єкти\",\"Pause slideshow\":\"Пауза у показі слайдів\",\"People & Body\":\"Люди та жести\",\"Pick an emoji\":\"Виберіть емоційку\",\"Previous\":\"Назад\",\"Search\":\"Пошук\",\"Search results\":\"Результати пошуку\",\"Select a tag\":\"Виберіть позначку\",\"Settings\":\"Налаштування\",\"Smileys & Emotion\":\"Усміхайлики та емоційки\",\"Start slideshow\":\"Почати показ слайдів\",\"Symbols\":\"Символи\",\"Travel & Places\":\"Поїздки та місця\",\"Unable to search the group\":\"Неможливо шукати в групі\"}},{\"locale\":\"zh_CN\",\"translations\":{\"{tag} (invisible)\":\"{tag} (不可见)\",\"{tag} (restricted)\":\"{tag} (受限)\",\"Actions\":\"行为\",\"Activities\":\"活动\",\"Animals & Nature\":\"动物 & 自然\",\"Choose\":\"选择\",\"Close\":\"关闭\",\"Custom\":\"自定义\",\"Flags\":\"旗帜\",\"Food & Drink\":\"食物 & 饮品\",\"Frequently used\":\"经常使用\",\"Message limit of {count} characters reached\":\"已达到 {count} 个字符的消息限制\",\"Next\":\"下一个\",\"No emoji found\":\"表情未找到\",\"No results\":\"无结果\",\"Objects\":\"物体\",\"Pause slideshow\":\"暂停幻灯片\",\"People & Body\":\"人 & 身体\",\"Pick an emoji\":\"选择一个表情\",\"Previous\":\"上一个\",\"Search\":\"搜索\",\"Search results\":\"搜索结果\",\"Select a tag\":\"选择一个标签\",\"Settings\":\"设置\",\"Settings navigation\":\"设置向导\",\"Smileys & Emotion\":\"笑脸 & 情感\",\"Start slideshow\":\"开始幻灯片\",\"Symbols\":\"符号\",\"Travel & Places\":\"旅游 & 地点\",\"Unable to search the group\":\"无法搜索分组\",\"Write message, @ to mention someone …\":\"输入消息,输入 @ 来提醒某人\"}},{\"locale\":\"zh_HK\",\"translations\":{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",\"Actions\":\"動作\",\"Activities\":\"活動\",\"Animals & Nature\":\"動物與自然\",\"Choose\":\"選擇\",\"Close\":\"關閉\",\"Custom\":\"自定義\",\"External documentation for {title}\":\"{title} 的外部文檔\",\"Flags\":\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"經常使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"Next\":\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",\"Objects\":\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Previous\":\"上一個\",\"Search\":\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",\"Settings\":\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",\"Submit\":\"提交\",\"Symbols\":\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}},{\"locale\":\"zh_TW\",\"translations\":{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",\"Actions\":\"動作\",\"Activities\":\"活動\",\"Animals & Nature\":\"動物與自然\",\"Choose\":\"選擇\",\"Close\":\"關閉\",\"Custom\":\"自定義\",\"Flags\":\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"最近使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"Next\":\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",\"Objects\":\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Previous\":\"上一個\",\"Search\":\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",\"Settings\":\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",\"Symbols\":\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}}].forEach(function (lang) {\n var translations = {};\n\n for (var key in lang.translations) {\n // Plural\n if (lang.translations[key].pluralId) {\n translations[key] = {\n msgid: key,\n msgid_plural: lang.translations[key].pluralId,\n msgstr: lang.translations[key].msgstr\n };\n continue;\n } // Singular\n\n\n translations[key] = {\n msgid: key,\n msgstr: [lang.translations[key]]\n };\n }\n\n gtBuilder.addTranslation(lang.locale, {\n translations: {\n '': translations\n }\n });\n});\nvar gt = gtBuilder.build();\nvar n = gt.ngettext.bind(gt);\nvar t = gt.gettext.bind(gt);\n\n\n/***/ }),\n\n/***/ \"./src/mixins/excludeClickOutsideClasses/index.js\":\n/*!********************************************************!*\\\n !*** ./src/mixins/excludeClickOutsideClasses/index.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ \"core-js/modules/es.array.slice.js\");\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ \"core-js/modules/es.array.from.js\");\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"core-js/modules/es.string.iterator.js\");\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"core-js/modules/es.symbol.js\");\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"core-js/modules/es.symbol.description.js\");\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ \"core-js/modules/es.symbol.iterator.js\");\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"core-js/modules/es.array.iterator.js\");\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n /**\n * A class-name or an array of class-names\n * to be ignored when clicking outside\n * an element\n */\n excludeClickOutsideClasses: {\n type: String | Array,\n default: function _default() {\n return [];\n }\n }\n },\n methods: {\n /**\n * Middleware Handler for V-Click-Outside\n *\n * @param {Event} event The click event\n * @returns {Boolean}\n */\n clickOutsideMiddleware: function clickOutsideMiddleware(event) {\n var excludedClassList = Array.isArray(this.excludeClickOutsideClasses) ? this.excludeClickOutsideClasses : [this.excludeClickOutsideClasses]; // No need to iterate through all parents\n // if class-list is empty\n\n if (excludedClassList.length === 0) {\n return true;\n }\n\n return !this.hasNodeOrAnyParentClass(event.target, excludedClassList);\n },\n\n /**\n * Checks if given node or any of it's parents have a class of classArray\n *\n * @param {Element} node Node to test\n * @param {Array} classArray List of classes to check for\n * @returns {Boolean}\n */\n hasNodeOrAnyParentClass: function hasNodeOrAnyParentClass(node, classArray) {\n var _iterator = _createForOfIteratorHelper(classArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _node$classList;\n\n var className = _step.value;\n\n if (node !== null && node !== void 0 && (_node$classList = node.classList) !== null && _node$classList !== void 0 && _node$classList.contains(className)) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return !!node.parentElement && this.hasNodeOrAnyParentClass(node.parentElement, classArray);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/index.js\":\n/*!*****************************!*\\\n !*** ./src/mixins/index.js ***!\n \\*****************************/\n/*! exports provided: excludeClickOutsideClasses, isFullscreen, isMobile, richEditor, userStatus */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _excludeClickOutsideClasses__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./excludeClickOutsideClasses */ \"./src/mixins/excludeClickOutsideClasses/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"excludeClickOutsideClasses\", function() { return _excludeClickOutsideClasses__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _isFullscreen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isFullscreen */ \"./src/mixins/isFullscreen/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFullscreen\", function() { return _isFullscreen__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _isMobile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isMobile */ \"./src/mixins/isMobile/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMobile\", function() { return _isMobile__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _richEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./richEditor */ \"./src/mixins/richEditor/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"richEditor\", function() { return _richEditor__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _userStatus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./userStatus */ \"./src/mixins/userStatus.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"userStatus\", function() { return _userStatus__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n\n\n\n\n\n\n/***/ }),\n\n/***/ \"./src/mixins/isFullscreen/index.js\":\n/*!******************************************!*\\\n !*** ./src/mixins/isFullscreen/index.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n isFullscreen: this._isFullscreen()\n };\n },\n beforeMount: function beforeMount() {\n window.addEventListener('resize', this._onResize);\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this._onResize);\n },\n methods: {\n _onResize: function _onResize() {\n // Update fullscreen mode\n this.isFullscreen = this._isFullscreen();\n },\n _isFullscreen: function _isFullscreen() {\n // if the window height is equal to the screen height,\n // we're in full screen mode\n return window.outerHeight === screen.height;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/isMobile/index.js\":\n/*!**************************************!*\\\n !*** ./src/mixins/isMobile/index.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/IsMobileState */ \"./src/utils/IsMobileState.js\");\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n isMobile: false\n };\n },\n mounted: function mounted() {\n _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].$on('changed', this.onIsMobileChanged);\n this.isMobile = _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].isMobile;\n },\n beforeDestroy: function beforeDestroy() {\n _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].$off('changed', this.onIsMobileChanged);\n },\n methods: {\n onIsMobileChanged: function onIsMobileChanged(val) {\n this.isMobile = val;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/l10n.js\":\n/*!****************************!*\\\n !*** ./src/mixins/l10n.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../l10n */ \"./src/l10n.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n n: _l10n__WEBPACK_IMPORTED_MODULE_0__[\"n\"],\n t: _l10n__WEBPACK_IMPORTED_MODULE_0__[\"t\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/richEditor/index.js\":\n/*!****************************************!*\\\n !*** ./src/mixins/richEditor/index.js ***!\n \\****************************************/\n/*! exports provided: USERID_REGEX, USERID_REGEX_WITH_SPACE, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"USERID_REGEX\", function() { return USERID_REGEX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"USERID_REGEX_WITH_SPACE\", function() { return USERID_REGEX_WITH_SPACE; });\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ \"core-js/modules/es.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.flat.js */ \"core-js/modules/es.array.flat.js\");\n/* harmony import */ var core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ \"core-js/modules/es.string.starts-with.js\");\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! escape-html */ \"escape-html\");\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var linkifyjs_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! linkifyjs/string */ \"linkifyjs/string\");\n/* harmony import */ var linkifyjs_string__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(linkifyjs_string__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var striptags__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! striptags */ \"striptags\");\n/* harmony import */ var striptags__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(striptags__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _components_RichContenteditable_MentionBubble__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../components/RichContenteditable/MentionBubble */ \"./src/components/RichContenteditable/MentionBubble.vue\");\n\n\n\n\n\n\n\n\n\n\n/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n\n\n\n // Beginning or whitespace. Non-capturing group\n\nvar MENTION_START = '(?:^|\\\\s)'; // Anything that is not text or end-of-line. Non-capturing group\n\nvar MENTION_END = '(?:[^a-z]|$)';\nvar USERID_REGEX = new RegExp(\"\".concat(MENTION_START, \"(@[a-zA-Z0-9_.@\\\\-']+)(\").concat(MENTION_END, \")\"), 'gi');\nvar USERID_REGEX_WITH_SPACE = new RegExp(\"\".concat(MENTION_START, \"(@\\\"[a-zA-Z0-9 _.@\\\\-']+\\\")(\").concat(MENTION_END, \")\"), 'gi');\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n userData: {\n type: Object,\n default: function _default() {\n return {};\n }\n }\n },\n methods: {\n /**\n * Convert the value string to html for the inner content\n *\n * @param {string} value the content without html\n * @returns {string} rendered html\n */\n renderContent: function renderContent(value) {\n var _this = this;\n\n // Sanitize the value prop\n var sanitizedValue = escape_html__WEBPACK_IMPORTED_MODULE_9___default()(value); // Extract all the userIds\n\n var splitValue = sanitizedValue.split(USERID_REGEX).map(function (part) {\n return part.split(USERID_REGEX_WITH_SPACE);\n }).flat(); // Replace userIds by html\n\n return splitValue.map(function (part) {\n // When splitting, the string is always putting the userIds\n // on the the uneven indexes. We only want to generate the mentions html\n if (!part.startsWith('@')) {\n // This part doesn't contain a mention, let's make sure links are parsed\n return linkifyjs_string__WEBPACK_IMPORTED_MODULE_10___default()(part, {\n defaultProtocol: 'https',\n target: '_blank',\n className: 'external',\n attributes: {\n rel: 'noopener noreferrer'\n }\n });\n } // Extracting the id, nuking the \" and @\n\n\n var id = part.replace(/[@\"]/gi, ''); // Compiling template and prepend with the space we removed during the split\n\n return ' ' + _this.genSelectTemplate(id);\n }).join('').replace(/\\n/gmi, '<br>').replace(/&/gmi, '&');\n },\n\n /**\n * Convert the innerHtml content to a string with mentions as text\n *\n * @param {string} content the content without html\n * @returns {string}\n */\n parseContent: function parseContent(content) {\n var text = content.replace(/<br>/gmi, '\\n');\n text = text.replace(/ /gmi, ' ');\n text = text.replace(/&/gmi, '&'); // Convert the mentions to text only\n // first we replace divs with new lines\n\n text = text.replace(/<\\/div>/gmi, '\\n'); // then we remove all leftover html\n\n text = striptags__WEBPACK_IMPORTED_MODULE_11___default()(text, '<div>');\n text = striptags__WEBPACK_IMPORTED_MODULE_11___default()(text);\n return text;\n },\n\n /**\n * Generate an autocompletion popup entry template\n *\n * @param {string} value the value to match against the userData\n * @returns {string}\n */\n genSelectTemplate: function genSelectTemplate(value) {\n var data = this.userData[value]; // Fallback to @mention in case no data matches\n\n if (!data) {\n // return `@${value}`\n return value.indexOf(' ') === -1 ? \"@\".concat(value) : \"@\\\"\".concat(value, \"\\\"\");\n } // Return template and make sure we strip of new lines and tabs\n\n\n return this.renderComponentHtml(data, _components_RichContenteditable_MentionBubble__WEBPACK_IMPORTED_MODULE_13__[\"default\"]).replace(/[\\n\\t]/gmi, '');\n },\n\n /**\n * Render a component and return its html content\n *\n * @param {Object} propsData the props to pass to the component\n * @param {Object} component the component to render\n * @returns {string} the rendered html\n */\n renderComponentHtml: function renderComponentHtml(propsData, component) {\n var View = vue__WEBPACK_IMPORTED_MODULE_12___default.a.extend(component);\n var Item = new View({\n propsData: propsData\n }); // Prepare mountpoint\n\n var wrapper = document.createElement('div');\n var mount = document.createElement('div');\n wrapper.style.display = 'none';\n wrapper.appendChild(mount);\n document.body.appendChild(wrapper); // Mount and get raw html\n\n Item.$mount(mount);\n var renderedHtml = wrapper.innerHTML; // Destroy\n\n Item.$destroy();\n wrapper.remove();\n return renderedHtml;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/userStatus.js\":\n/*!**********************************!*\\\n !*** ./src/mixins/userStatus.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ \"core-js/modules/es.promise.js\");\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ \"regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/axios */ \"@nextcloud/axios\");\n/* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_axios__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/router */ \"@nextcloud/router\");\n/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_router__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _nextcloud_capabilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/capabilities */ \"@nextcloud/capabilities\");\n/* harmony import */ var _nextcloud_capabilities__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_capabilities__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/auth */ \"@nextcloud/auth\");\n/* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_auth__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n hasStatus: false,\n userStatus: {\n status: null,\n message: null,\n icon: null\n }\n };\n },\n methods: {\n /**\n * Fetches the user-status from the server\n * @param {String} userId UserId of the user to fetch the status for\n *\n * @returns {Promise<void>}\n */\n fetchUserStatus: function fetchUserStatus(userId) {\n var _this = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var capabilities, _yield$axios$get, data, _data$ocs$data, status, message, icon, _e$response$data$ocs, _e$response$data$ocs$;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n capabilities = Object(_nextcloud_capabilities__WEBPACK_IMPORTED_MODULE_5__[\"getCapabilities\"])();\n\n if (!(!Object.prototype.hasOwnProperty.call(capabilities, 'user_status') || !capabilities.user_status.enabled)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n if (Object(_nextcloud_auth__WEBPACK_IMPORTED_MODULE_6__[\"getCurrentUser\"])()) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 5:\n _context.prev = 5;\n _context.next = 8;\n return _nextcloud_axios__WEBPACK_IMPORTED_MODULE_3___default.a.get(Object(_nextcloud_router__WEBPACK_IMPORTED_MODULE_4__[\"generateOcsUrl\"])('apps/user_status/api/v1', 2) + \"statuses/\".concat(encodeURIComponent(userId)));\n\n case 8:\n _yield$axios$get = _context.sent;\n data = _yield$axios$get.data;\n _data$ocs$data = data.ocs.data, status = _data$ocs$data.status, message = _data$ocs$data.message, icon = _data$ocs$data.icon;\n _this.userStatus.status = status;\n _this.userStatus.message = message || '';\n _this.userStatus.icon = icon || '';\n _this.hasStatus = true;\n _context.next = 22;\n break;\n\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](5);\n\n if (!(_context.t0.response.status === 404 && ((_e$response$data$ocs = _context.t0.response.data.ocs) === null || _e$response$data$ocs === void 0 ? void 0 : (_e$response$data$ocs$ = _e$response$data$ocs.data) === null || _e$response$data$ocs$ === void 0 ? void 0 : _e$response$data$ocs$.length) === 0)) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 21:\n console.error(_context.t0);\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[5, 17]]);\n }))();\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/utils/FindRanges.js\":\n/*!*********************************!*\\\n !*** ./src/utils/FindRanges.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {String} text The text to search in\n * @param {String} search The text to search for\n * @returns {Array} The array of ranges to highlight\n */\nvar FindRanges = function FindRanges(text, search) {\n var ranges = [];\n var currentIndex = 0;\n var index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex); // Variable to track that we don't iterate more often than the length of the text.\n // Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\n var i = 0;\n\n while (index > -1 && i < text.length) {\n currentIndex = index + search.length;\n ranges.push({\n start: index,\n end: currentIndex\n });\n index = text.toLowerCase().indexOf(search.toLowerCase(), index + 1);\n i++;\n }\n\n return ranges;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FindRanges);\n\n/***/ }),\n\n/***/ \"./src/utils/GenColors.js\":\n/*!********************************!*\\\n !*** ./src/utils/GenColors.js ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n */\nfunction Color(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n}\n\nfunction stepCalc(steps, ends) {\n var step = new Array(3);\n step[0] = (ends[1].r - ends[0].r) / steps;\n step[1] = (ends[1].g - ends[0].g) / steps;\n step[2] = (ends[1].b - ends[0].b) / steps;\n return step;\n}\n\nfunction mixPalette(steps, color1, color2) {\n var palette = [];\n palette.push(color1);\n var step = stepCalc(steps, [color1, color2]);\n\n for (var i = 1; i < steps; i++) {\n var r = parseInt(color1.r + step[0] * i, 10);\n var g = parseInt(color1.g + step[1] * i, 10);\n var b = parseInt(color1.b + step[2] * i, 10);\n palette.push(new Color(r, g, b));\n }\n\n return palette;\n}\n/**\n * Generate colors from the official nextcloud color\n * You can provide how many colors you want (multiplied by 3)\n * if step = 6\n * 3 colors * 6 will result in 18 generated colors\n *\n * @param {number} [steps=6] Number of steps to go from a color to another\n * @returns {Object[]}\n */\n\n\nfunction GenColors(steps) {\n if (!steps) {\n steps = 6;\n }\n\n var red = new Color(182, 70, 157);\n var yellow = new Color(221, 203, 85);\n var blue = new Color(0, 130, 201); // Nextcloud blue\n\n var palette1 = mixPalette(steps, red, yellow);\n var palette2 = mixPalette(steps, yellow, blue);\n var palette3 = mixPalette(steps, blue, red);\n return palette1.concat(palette2).concat(palette3);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GenColors);\n\n/***/ }),\n\n/***/ \"./src/utils/IsMobileState.js\":\n/*!************************************!*\\\n !*** ./src/utils/IsMobileState.js ***!\n \\************************************/\n/*! exports provided: IsMobileState */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IsMobileState\", function() { return IsMobileState; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer\n *\n * @author Kristof Hamann\n * @author Paul Schwörer\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nvar IsMobileState = new vue__WEBPACK_IMPORTED_MODULE_0___default.a({\n data: function data() {\n return {\n isMobile: false\n };\n },\n watch: {\n isMobile: function isMobile(val) {\n this.$emit('changed', val);\n }\n },\n created: function created() {\n window.addEventListener('resize', this.handleWindowResize);\n this.handleWindowResize();\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleWindowResize);\n },\n methods: {\n handleWindowResize: function handleWindowResize() {\n this.isMobile = document.documentElement.clientWidth < 1024;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/utils/ScopeComponent.js\":\n/*!*************************************!*\\\n !*** ./src/utils/ScopeComponent.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar ScopeComponent = function ScopeComponent(Component) {\n // Init mounted vue if none\n if (!Component.mounted) {\n Component.mounted = [];\n } else if (!Array.isArray(Component.mounted)) {\n Component.mounted = [Component.mounted];\n } // Inject root scoping function\n\n\n Component.mounted.push(function () {\n this.$el.setAttribute(\"data-v-\".concat(\"84c461f\"), '');\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ScopeComponent);\n\n/***/ }),\n\n/***/ \"@nextcloud/auth\":\n/*!**********************************!*\\\n !*** external \"@nextcloud/auth\" ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/auth\");\n\n/***/ }),\n\n/***/ \"@nextcloud/axios\":\n/*!***********************************!*\\\n !*** external \"@nextcloud/axios\" ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/axios\");\n\n/***/ }),\n\n/***/ \"@nextcloud/browser-storage\":\n/*!*********************************************!*\\\n !*** external \"@nextcloud/browser-storage\" ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/browser-storage\");\n\n/***/ }),\n\n/***/ \"@nextcloud/capabilities\":\n/*!******************************************!*\\\n !*** external \"@nextcloud/capabilities\" ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/capabilities\");\n\n/***/ }),\n\n/***/ \"@nextcloud/event-bus\":\n/*!***************************************!*\\\n !*** external \"@nextcloud/event-bus\" ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/event-bus\");\n\n/***/ }),\n\n/***/ \"@nextcloud/l10n/dist/gettext\":\n/*!***********************************************!*\\\n !*** external \"@nextcloud/l10n/dist/gettext\" ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/l10n/dist/gettext\");\n\n/***/ }),\n\n/***/ \"@nextcloud/router\":\n/*!************************************!*\\\n !*** external \"@nextcloud/router\" ***!\n \\************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/router\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.concat.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.array.concat.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.concat.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.filter.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.array.filter.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.filter.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.flat.js\":\n/*!***************************************************!*\\\n !*** external \"core-js/modules/es.array.flat.js\" ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.flat.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.from.js\":\n/*!***************************************************!*\\\n !*** external \"core-js/modules/es.array.from.js\" ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.from.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.includes.js\":\n/*!*******************************************************!*\\\n !*** external \"core-js/modules/es.array.includes.js\" ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.includes.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.iterator.js\":\n/*!*******************************************************!*\\\n !*** external \"core-js/modules/es.array.iterator.js\" ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.join.js\":\n/*!***************************************************!*\\\n !*** external \"core-js/modules/es.array.join.js\" ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.join.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.map.js\":\n/*!**************************************************!*\\\n !*** external \"core-js/modules/es.array.map.js\" ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.map.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.reduce.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.array.reduce.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.reduce.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.slice.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.array.slice.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.slice.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.function.name.js\":\n/*!******************************************************!*\\\n !*** external \"core-js/modules/es.function.name.js\" ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.function.name.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.number.constructor.js\":\n/*!***********************************************************!*\\\n !*** external \"core-js/modules/es.number.constructor.js\" ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.number.constructor.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.get-own-property-descriptor.js\":\n/*!***************************************************************************!*\\\n !*** external \"core-js/modules/es.object.get-own-property-descriptor.js\" ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.get-own-property-descriptor.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.get-own-property-descriptors.js\":\n/*!****************************************************************************!*\\\n !*** external \"core-js/modules/es.object.get-own-property-descriptors.js\" ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.get-own-property-descriptors.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.keys.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.object.keys.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.keys.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.to-string.js\":\n/*!*********************************************************!*\\\n !*** external \"core-js/modules/es.object.to-string.js\" ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.to-string.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.promise.js\":\n/*!************************************************!*\\\n !*** external \"core-js/modules/es.promise.js\" ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.promise.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.regexp.constructor.js\":\n/*!***********************************************************!*\\\n !*** external \"core-js/modules/es.regexp.constructor.js\" ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.regexp.constructor.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.regexp.exec.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.regexp.exec.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.regexp.exec.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.regexp.to-string.js\":\n/*!*********************************************************!*\\\n !*** external \"core-js/modules/es.regexp.to-string.js\" ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.regexp.to-string.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.code-point-at.js\":\n/*!*************************************************************!*\\\n !*** external \"core-js/modules/es.string.code-point-at.js\" ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.code-point-at.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.from-code-point.js\":\n/*!***************************************************************!*\\\n !*** external \"core-js/modules/es.string.from-code-point.js\" ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.from-code-point.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.iterator.js\":\n/*!********************************************************!*\\\n !*** external \"core-js/modules/es.string.iterator.js\" ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.match.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.string.match.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.match.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.replace.js\":\n/*!*******************************************************!*\\\n !*** external \"core-js/modules/es.string.replace.js\" ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.replace.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.search.js\":\n/*!******************************************************!*\\\n !*** external \"core-js/modules/es.string.search.js\" ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.search.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.split.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.string.split.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.split.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.starts-with.js\":\n/*!***********************************************************!*\\\n !*** external \"core-js/modules/es.string.starts-with.js\" ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.starts-with.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.trim.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.string.trim.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.trim.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.symbol.description.js\":\n/*!***********************************************************!*\\\n !*** external \"core-js/modules/es.symbol.description.js\" ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.symbol.description.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.symbol.iterator.js\":\n/*!********************************************************!*\\\n !*** external \"core-js/modules/es.symbol.iterator.js\" ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.symbol.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.symbol.js\":\n/*!***********************************************!*\\\n !*** external \"core-js/modules/es.symbol.js\" ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.symbol.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/web.dom-collections.for-each.js\":\n/*!******************************************************************!*\\\n !*** external \"core-js/modules/web.dom-collections.for-each.js\" ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/web.dom-collections.for-each.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/web.dom-collections.iterator.js\":\n/*!******************************************************************!*\\\n !*** external \"core-js/modules/web.dom-collections.iterator.js\" ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/web.dom-collections.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/web.url.js\":\n/*!*********************************************!*\\\n !*** external \"core-js/modules/web.url.js\" ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/web.url.js\");\n\n/***/ }),\n\n/***/ \"escape-html\":\n/*!******************************!*\\\n !*** external \"escape-html\" ***!\n \\******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"escape-html\");\n\n/***/ }),\n\n/***/ \"linkifyjs/string\":\n/*!***********************************!*\\\n !*** external \"linkifyjs/string\" ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"linkifyjs/string\");\n\n/***/ }),\n\n/***/ \"md5\":\n/*!**********************!*\\\n !*** external \"md5\" ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"md5\");\n\n/***/ }),\n\n/***/ \"regenerator-runtime/runtime.js\":\n/*!*************************************************!*\\\n !*** external \"regenerator-runtime/runtime.js\" ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"regenerator-runtime/runtime.js\");\n\n/***/ }),\n\n/***/ \"striptags\":\n/*!****************************!*\\\n !*** external \"striptags\" ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"striptags\");\n\n/***/ }),\n\n/***/ \"v-click-outside\":\n/*!**********************************!*\\\n !*** external \"v-click-outside\" ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"v-click-outside\");\n\n/***/ }),\n\n/***/ \"v-tooltip\":\n/*!****************************!*\\\n !*** external \"v-tooltip\" ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"v-tooltip\");\n\n/***/ }),\n\n/***/ \"vue\":\n/*!**********************!*\\\n !*** external \"vue\" ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ }),\n\n/***/ \"vue-multiselect\":\n/*!**********************************!*\\\n !*** external \"vue-multiselect\" ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue-multiselect\");\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9zcmMvY29tcG9uZW50cy9IaWdobGlnaHQvSGlnaGxpZ2h0LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3NyYy9jb21wb25lbnRzL0xpc3RJdGVtSWNvbi9MaXN0SXRlbUljb24udnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvRWxsaXBzaXNlZE9wdGlvbi52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9zcmMvY29tcG9uZW50cy9NdWx0aXNlbGVjdC9NdWx0aXNlbGVjdC52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9zcmMvY29tcG9uZW50cy9Qb3BvdmVyL1BvcG92ZXIudnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnUudnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnVJdGVtLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3NyYy9jb21wb25lbnRzL1JpY2hDb250ZW50ZWRpdGFibGUvTWVudGlvbkJ1YmJsZS52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL011bHRpc2VsZWN0L2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9kaXJlY3RpdmVzL1Rvb2x0aXAvaW5kZXguc2NzcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWU/NTg5MCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTGlzdEl0ZW1JY29uL0xpc3RJdGVtSWNvbi52dWU/MTE5OSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvRWxsaXBzaXNlZE9wdGlvbi52dWU/NTIyMiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZT80NjNmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyTWVudS9Qb3BvdmVyTWVudS52dWU/N2E4MiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnVJdGVtLnZ1ZT84NDNhIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9SaWNoQ29udGVudGVkaXRhYmxlL01lbnRpb25CdWJibGUudnVlPzhkZGYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXJNZW51L1BvcG92ZXJNZW51SXRlbS52dWU/ZTBhNyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0F2YXRhci9BdmF0YXIudnVlP2JiMTMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0xpc3RJdGVtSWNvbi9MaXN0SXRlbUljb24udnVlPzg4NzkiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL011bHRpc2VsZWN0L0VsbGlwc2lzZWRPcHRpb24udnVlPzk4ODIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWU/MjY2ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnUudnVlPzIxYzYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXJNZW51L1BvcG92ZXJNZW51SXRlbS52dWU/NWQ3NCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUmljaENvbnRlbnRlZGl0YWJsZS9NZW50aW9uQnViYmxlLnZ1ZT85ZWEyIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyTWVudS9Qb3BvdmVyTWVudUl0ZW0udnVlPzM3MmEiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWU/ZWI1NCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTGlzdEl0ZW1JY29uL0xpc3RJdGVtSWNvbi52dWU/ZjgwZCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvRWxsaXBzaXNlZE9wdGlvbi52dWU/OWQ5NiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvTXVsdGlzZWxlY3QudnVlPzk0ZTgiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWU/MGRkNiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnUudnVlPzU2NmMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXJNZW51L1BvcG92ZXJNZW51SXRlbS52dWU/MWM1NCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUmljaENvbnRlbnRlZGl0YWJsZS9NZW50aW9uQnViYmxlLnZ1ZT84ODVhIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BdmF0YXIvQXZhdGFyLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWU/ZDUxZCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWU/Mzc0MiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWU/Mjg2ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXZhdGFyL2luZGV4LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9IaWdobGlnaHQvSGlnaGxpZ2h0LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvSGlnaGxpZ2h0L0hpZ2hsaWdodC52dWU/NDI5MCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvSGlnaGxpZ2h0L2luZGV4LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9MaXN0SXRlbUljb24vTGlzdEl0ZW1JY29uLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTGlzdEl0ZW1JY29uL0xpc3RJdGVtSWNvbi52dWU/NWZkOSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTGlzdEl0ZW1JY29uL0xpc3RJdGVtSWNvbi52dWU/NzI3OSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTGlzdEl0ZW1JY29uL0xpc3RJdGVtSWNvbi52dWU/OTlmNSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTGlzdEl0ZW1JY29uL2luZGV4LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9NdWx0aXNlbGVjdC9FbGxpcHNpc2VkT3B0aW9uLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvRWxsaXBzaXNlZE9wdGlvbi52dWU/YzRlNSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvRWxsaXBzaXNlZE9wdGlvbi52dWU/OTJjYiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvRWxsaXBzaXNlZE9wdGlvbi52dWU/NTEzZiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvTXVsdGlzZWxlY3QudnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9NdWx0aXNlbGVjdC9NdWx0aXNlbGVjdC52dWU/NDcxZCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvTXVsdGlzZWxlY3QvTXVsdGlzZWxlY3QudnVlPzNiNGYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL011bHRpc2VsZWN0L2luZGV4LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9NdWx0aXNlbGVjdC9pbmRleC5zY3NzP2FhYWYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWU/MDFkMiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZT8xNGM2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyL1BvcG92ZXIudnVlPzcyZjYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXJNZW51L1BvcG92ZXJNZW51LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnUudnVlPzdlOTQiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXJNZW51L1BvcG92ZXJNZW51LnZ1ZT8xMjA3Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyTWVudS9Qb3BvdmVyTWVudS52dWU/OTgwNSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnVJdGVtLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnVJdGVtLnZ1ZT82M2U2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyTWVudS9Qb3BvdmVyTWVudUl0ZW0udnVlP2E5YzciLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXJNZW51L1BvcG92ZXJNZW51SXRlbS52dWU/OTE4OCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnVJdGVtLnZ1ZT9jM2NlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyTWVudS9pbmRleC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUmljaENvbnRlbnRlZGl0YWJsZS9NZW50aW9uQnViYmxlLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUmljaENvbnRlbnRlZGl0YWJsZS9NZW50aW9uQnViYmxlLnZ1ZT82ODI1Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9SaWNoQ29udGVudGVkaXRhYmxlL01lbnRpb25CdWJibGUudnVlP2VkODAiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1JpY2hDb250ZW50ZWRpdGFibGUvTWVudGlvbkJ1YmJsZS52dWU/YjA0MiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2RpcmVjdGl2ZXMvVG9vbHRpcC9pbmRleC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2RpcmVjdGl2ZXMvVG9vbHRpcC9pbmRleC5zY3NzP2FmZTgiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5lb3QiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5zdmciLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi50dGYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi53b2ZmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvZnVuY3Rpb25zL3VzZXJuYW1lVG9Db2xvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2Z1bmN0aW9ucy91c2VybmFtZVRvQ29sb3IvdXNlcm5hbWVUb0NvbG9yLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvbDEwbi5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL21peGlucy9leGNsdWRlQ2xpY2tPdXRzaWRlQ2xhc3Nlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL21peGlucy9pbmRleC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL21peGlucy9pc0Z1bGxzY3JlZW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9taXhpbnMvaXNNb2JpbGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9taXhpbnMvbDEwbi5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL21peGlucy9yaWNoRWRpdG9yL2luZGV4LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvbWl4aW5zL3VzZXJTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy91dGlscy9GaW5kUmFuZ2VzLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvdXRpbHMvR2VuQ29sb3JzLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvdXRpbHMvSXNNb2JpbGVTdGF0ZS5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL3V0aWxzL1Njb3BlQ29tcG9uZW50LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJAbmV4dGNsb3VkL2F1dGhcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiQG5leHRjbG91ZC9heGlvc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJAbmV4dGNsb3VkL2Jyb3dzZXItc3RvcmFnZVwiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJAbmV4dGNsb3VkL2NhcGFiaWxpdGllc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJAbmV4dGNsb3VkL2V2ZW50LWJ1c1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJAbmV4dGNsb3VkL2wxMG4vZGlzdC9nZXR0ZXh0XCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcIkBuZXh0Y2xvdWQvcm91dGVyXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmxhdC5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZS5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuY29kZS1wb2ludC1hdC5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc2VhcmNoLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdGFydHMtd2l0aC5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLml0ZXJhdG9yLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiZXNjYXBlLWh0bWxcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwibGlua2lmeWpzL3N0cmluZ1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJtZDVcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcInN0cmlwdGFnc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJ2LWNsaWNrLW91dHNpZGVcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwidi10b29sdGlwXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcInZ1ZVwiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJ2dWUtbXVsdGlzZWxlY3RcIiJdLCJuYW1lcyI6WyJBdmF0YXIiLCJIaWdobGlnaHQiLCJMaXN0SXRlbUljb24iLCJTY29wZUNvbXBvbmVudCIsIk11bHRpc2VsZWN0IiwiUG9wb3Zlck1lbnUiLCJWVG9vbHRpcCIsIm9wdGlvbnMiLCJkZWZhdWx0VGVtcGxhdGUiLCJTQ09QRV9WRVJTSU9OIiwiZGVmYXVsdEh0bWwiLCJ1c2VybmFtZVRvQ29sb3IiLCJ1c2VybmFtZSIsImhhc2giLCJ0b0xvd2VyQ2FzZSIsIm1hdGNoIiwibWQ1IiwicmVwbGFjZSIsInN0ZXBzIiwiZmluYWxQYWxldHRlIiwiR2VuQ29sb3JzIiwiaGFzaFRvSW50IiwibWF4aW11bSIsImZpbmFsSW50IiwicmVzdWx0IiwiaSIsImxlbmd0aCIsInB1c2giLCJwYXJzZUludCIsImNoYXJBdCIsImoiLCJndEJ1aWxkZXIiLCJnZXRHZXR0ZXh0QnVpbGRlciIsImRldGVjdExvY2FsZSIsIlRSQU5TTEFUSU9OUyIsImZvckVhY2giLCJsYW5nIiwidHJhbnNsYXRpb25zIiwia2V5IiwicGx1cmFsSWQiLCJtc2dpZCIsIm1zZ2lkX3BsdXJhbCIsIm1zZ3N0ciIsImFkZFRyYW5zbGF0aW9uIiwibG9jYWxlIiwiZ3QiLCJidWlsZCIsIm4iLCJuZ2V0dGV4dCIsImJpbmQiLCJ0IiwiZ2V0dGV4dCIsInByb3BzIiwiZXhjbHVkZUNsaWNrT3V0c2lkZUNsYXNzZXMiLCJ0eXBlIiwiU3RyaW5nIiwiQXJyYXkiLCJkZWZhdWx0IiwibWV0aG9kcyIsImNsaWNrT3V0c2lkZU1pZGRsZXdhcmUiLCJldmVudCIsImV4Y2x1ZGVkQ2xhc3NMaXN0IiwiaXNBcnJheSIsImhhc05vZGVPckFueVBhcmVudENsYXNzIiwidGFyZ2V0Iiwibm9kZSIsImNsYXNzQXJyYXkiLCJjbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInBhcmVudEVsZW1lbnQiLCJkYXRhIiwiaXNGdWxsc2NyZWVuIiwiX2lzRnVsbHNjcmVlbiIsImJlZm9yZU1vdW50Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9vblJlc2l6ZSIsImJlZm9yZURlc3Ryb3kiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3V0ZXJIZWlnaHQiLCJzY3JlZW4iLCJoZWlnaHQiLCJpc01vYmlsZSIsIm1vdW50ZWQiLCJJc01vYmlsZVN0YXRlIiwiJG9uIiwib25Jc01vYmlsZUNoYW5nZWQiLCIkb2ZmIiwidmFsIiwiTUVOVElPTl9TVEFSVCIsIk1FTlRJT05fRU5EIiwiVVNFUklEX1JFR0VYIiwiUmVnRXhwIiwiVVNFUklEX1JFR0VYX1dJVEhfU1BBQ0UiLCJ1c2VyRGF0YSIsIk9iamVjdCIsInJlbmRlckNvbnRlbnQiLCJ2YWx1ZSIsInNhbml0aXplZFZhbHVlIiwiZXNjYXBlSHRtbCIsInNwbGl0VmFsdWUiLCJzcGxpdCIsIm1hcCIsInBhcnQiLCJmbGF0Iiwic3RhcnRzV2l0aCIsImxpbmtpZnlTdHIiLCJkZWZhdWx0UHJvdG9jb2wiLCJhdHRyaWJ1dGVzIiwicmVsIiwiaWQiLCJnZW5TZWxlY3RUZW1wbGF0ZSIsImpvaW4iLCJwYXJzZUNvbnRlbnQiLCJjb250ZW50IiwidGV4dCIsInN0cmlwVGFncyIsImluZGV4T2YiLCJyZW5kZXJDb21wb25lbnRIdG1sIiwiTWVudGlvbkJ1YmJsZSIsInByb3BzRGF0YSIsImNvbXBvbmVudCIsIlZpZXciLCJWdWUiLCJleHRlbmQiLCJJdGVtIiwid3JhcHBlciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsIm1vdW50Iiwic3R5bGUiLCJkaXNwbGF5IiwiYXBwZW5kQ2hpbGQiLCJib2R5IiwiJG1vdW50IiwicmVuZGVyZWRIdG1sIiwiaW5uZXJIVE1MIiwiJGRlc3Ryb3kiLCJyZW1vdmUiLCJoYXNTdGF0dXMiLCJ1c2VyU3RhdHVzIiwic3RhdHVzIiwibWVzc2FnZSIsImljb24iLCJmZXRjaFVzZXJTdGF0dXMiLCJ1c2VySWQiLCJjYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ1c2VyX3N0YXR1cyIsImVuYWJsZWQiLCJnZXRDdXJyZW50VXNlciIsImF4aW9zIiwiZ2V0IiwiZ2VuZXJhdGVPY3NVcmwiLCJlbmNvZGVVUklDb21wb25lbnQiLCJvY3MiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJlcnJvciIsIkZpbmRSYW5nZXMiLCJzZWFyY2giLCJyYW5nZXMiLCJjdXJyZW50SW5kZXgiLCJpbmRleCIsInN0YXJ0IiwiZW5kIiwiQ29sb3IiLCJyIiwiZyIsImIiLCJzdGVwQ2FsYyIsImVuZHMiLCJzdGVwIiwibWl4UGFsZXR0ZSIsImNvbG9yMSIsImNvbG9yMiIsInBhbGV0dGUiLCJyZWQiLCJ5ZWxsb3ciLCJibHVlIiwicGFsZXR0ZTEiLCJwYWxldHRlMiIsInBhbGV0dGUzIiwiY29uY2F0Iiwid2F0Y2giLCIkZW1pdCIsImNyZWF0ZWQiLCJoYW5kbGVXaW5kb3dSZXNpemUiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIkNvbXBvbmVudCIsIiRlbCIsInNldEF0dHJpYnV0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDtBQUNuRCxDQUFDO0FBQ0QsTztRQ1ZBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMx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LE9BQU8sWUFBWSxhQUFhLEtBQUssT0FBTyxZQUFZLFlBQVksS0FBSyxPQUFPLFlBQVksWUFBWSxLQUFLLE9BQU8sWUFBWSxZQUFZLEtBQUssT0FBTyxZQUFZLFlBQVksS0FBSyxPQUFPLFlBQVksWUFBWSxLQUFLLE9BQU8sWUFBWSxZQUFZLEtBQUssTUFBTSxZQUFZLFlBQVksS0FBSyxNQUFNLFlBQVksWUFBWSxLQUFLLE1BQU0sWUFBWSxZQUFZLEtBQUssT0FBTyxZQUFZLFlBQVksS0FBSyxNQUFNLFlBQVksWUFBWSxLQUFLLE9BQU8sWUFBWSxZQUFZLEtBQUssT0FBTyxZQUFZLFlBQVksS0FBSyxPQUFPLFlBQVksYUFBYSxLQUFLLE9BQU8sWUFBWSxhQUFhLEtBQUssUUFBUSxZQUFZLGFBQWEsS0FBSyxNQUFNLFlBQVksYUFBYSxLQUFLLE1BQU0sWUFBWSxhQUFhLEtBQUssTUFBTSxZQUFZLEtBQUssTUFBTSxVQUFVLEtBQUssS0FBSyxZQUFZLFdBQVcsVUFBVSxLQUFLLEtBQUssVUFBVSxVQUFVLFVBQVUsWUFBWSxXQUFXLFlBQVksYUFBYSxLQUFLLE1BQU0sZUFBZSxjQUFjLGFBQWEsWUFBWSxLQUFLLE9BQU8sV0FBVyxLQUFLLE9BQU8sV0FBVyxLQUFLLE1BQU0sV0FBVyxLQUFLLE9BQU8sYUFBYSxLQUFLLE9BQU8sYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxhQUFhLEtBQUssT0FBTyxXQUFXLFVBQVUsWUFBWSxLQUFLLE9BQU8sYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxLQUFLLE9BQU8sYUFBYSxhQUFhLEtBQUssT0FBTyxhQUFhLEtBQUssT0FBTyxXQUFXLFlBQVksS0FBSyxPQUFPLGFBQWEsV0FBVyxVQUFVLEtBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxhQUFhLFdBQVcsVUFBVSxVQUFVLFVBQVUsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLEtBQUssTUFBTSxZQUFZLGFBQWEsS0FBSyxNQUFNLFlBQVksYUFBYSxLQUFLLE9BQU8sV0FBVyxLQUFL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LHFFOzs7Ozs7Ozs7OztBQ0FBLHFGOzs7Ozs7Ozs7OztBQ0FBLHNGOzs7Ozs7Ozs7OztBQ0FBLDhEOzs7Ozs7Ozs7OztBQ0FBLG1FOzs7Ozs7Ozs7OztBQ0FBLDBEOzs7Ozs7Ozs7OztBQ0FBLHFFOzs7Ozs7Ozs7OztBQ0FBLDhEOzs7Ozs7Ozs7OztBQ0FBLG1FOzs7Ozs7Ozs7OztBQ0FBLHVFOzs7Ozs7Ozs7OztBQ0FBLHlFOzs7Ozs7Ozs7OztBQ0FBLGtFOzs7Ozs7Ozs7OztBQ0FBLCtEOzs7Ozs7Ozs7OztBQ0FBLGlFOzs7Ozs7Ozs7OztBQ0FBLGdFOzs7Ozs7Ozs7OztBQ0FBLCtEOzs7Ozs7Ozs7OztBQ0FBLHFFOzs7Ozs7Ozs7OztBQ0FBLDhEOzs7Ozs7Ozs7OztBQ0FBLHFFOzs7Ozs7Ozs7OztBQ0FBLGtFOzs7Ozs7Ozs7OztBQ0FBLHlEOzs7Ozs7Ozs7OztBQ0FBLDRFOzs7Ozs7Ozs7OztBQ0FBLDRFOzs7Ozs7Ozs7OztBQ0FBLHVEOzs7Ozs7Ozs7OztBQ0FBLHdDOzs7Ozs7Ozs7OztBQ0FBLDZDOzs7Ozs7Ozs7OztBQ0FBLGdDOzs7Ozs7Ozs7OztBQ0FBLDJEOzs7Ozs7Ozs7OztBQ0FBLHNDOzs7Ozs7Ozs7OztBQ0FBLDRDOzs7Ozs7Ozs7OztBQ0FBLHNDOzs7Ozs7Ozs7OztBQ0FBLGdDOzs7Ozs7Ozs7OztBQ0FBLDRDIiwiZmlsZSI6IkNvbXBvbmVudHMvTXVsdGlzZWxlY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIkNvbXBvbmVudHMvTXVsdGlzZWxlY3RcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiQ29tcG9uZW50cy9NdWx0aXNlbGVjdFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJOZXh0Y2xvdWRWdWVcIl0gPSByb290W1wiTmV4dGNsb3VkVnVlXCJdIHx8IHt9LCByb290W1wiTmV4dGNsb3VkVnVlXCJdW1wiQ29tcG9uZW50cy9NdWx0aXNlbGVjdFwiXSA9IGZhY3RvcnkoKTtcbn0pKHdpbmRvdywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvY29tcG9uZW50cy9NdWx0aXNlbGVjdC9pbmRleC5qc1wiKTtcbiIsIjwhLS1cbiAgLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKdWxpdXMgSMOkcnRsIDxqdXNAYml0Z3JpZC5uZXQ+XG4gIC1cbiAgLSBAYXV0aG9yIEp1bGl1cyBIw6RydGwgPGp1c0BiaXRncmlkLm5ldD5cbiAgLVxuICAtIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAgLSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAtIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAgLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAgLVxuICAtIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gIC1cbiAgLS0+XG5cbjxkb2NzPlxuXG4jIyMgQmFzaWMgdXNlciBhdmF0YXJcblxuYGBgdnVlXG5cdDxhdmF0YXIgdXNlcj1cImphbmVkb2VcIiBkaXNwbGF5LW5hbWU9XCJKYW5lIERvZVwiIC8+XG5gYGBcblxuIyMjIEF2YXRhciB3aXRoIGltYWdlXG5cbmBgYHZ1ZVxuXHQ8YXZhdGFyIHVybD1cImh0dHBzOi8vbmV4dGNsb3VkLmNvbS93cC1jb250ZW50L3RoZW1lcy9uZXh0L2Fzc2V0cy9pbWcvY29tbW9uL25leHRjbG91ZC1zcXVhcmUtbG9nby5wbmdcIiAvPlxuYGBgXG5cbjwvZG9jcz5cbjx0ZW1wbGF0ZT5cblx0PGRpdiB2LXRvb2x0aXA9XCJ0b29sdGlwXCJcblx0XHR2LWNsaWNrLW91dHNpZGU9XCJjbG9zZU1lbnVcIlxuXHRcdDpjbGFzcz1cIntcblx0XHRcdCdhdmF0YXJkaXYtLXVua25vd24nOiB1c2VyRG9lc05vdEV4aXN0LFxuXHRcdFx0J2F2YXRhcmRpdi0td2l0aC1tZW51JzogaGFzTWVudVxuXHRcdH1cIlxuXHRcdDpzdHlsZT1cImF2YXRhclN0eWxlXCJcblx0XHRjbGFzcz1cImF2YXRhcmRpdiBwb3BvdmVybWVudS13cmFwcGVyXCJcblx0XHR2LW9uPVwiIWRpc2FibGVNZW51ID8geyBjbGljazogdG9nZ2xlTWVudSB9IDoge31cIj5cblx0XHQ8IS0tIEF2YXRhciBpY29uIG9yIGltYWdlIC0tPlxuXHRcdDxkaXYgdi1pZj1cImljb25DbGFzc1wiIDpjbGFzcz1cImljb25DbGFzc1wiIGNsYXNzPVwiYXZhdGFyLWNsYXNzLWljb25cIiAvPlxuXHRcdDxpbWcgdi1lbHNlLWlmPVwiaXNBdmF0YXJMb2FkZWQgJiYgIXVzZXJEb2VzTm90RXhpc3RcIlxuXHRcdFx0OnNyYz1cImF2YXRhclVybExvYWRlZFwiXG5cdFx0XHQ6c3Jjc2V0PVwiYXZhdGFyU3JjU2V0TG9hZGVkXCJcblx0XHRcdGFsdD1cIlwiPlxuXHRcdDxQb3BvdmVyXG5cdFx0XHR2LWlmPVwiaGFzTWVudVwiXG5cdFx0XHRwbGFjZW1lbnQ9XCJhdXRvXCJcblx0XHRcdDpjb250YWluZXI9XCJtZW51Q29udGFpbmVyXCJcblx0XHRcdDpvcGVuPVwiY29udGFjdHNNZW51T3BlblN0YXRlXCI+XG5cdFx0XHQ8UG9wb3Zlck1lbnUgOm1lbnU9XCJtZW51XCIgLz5cblx0XHRcdDx0ZW1wbGF0ZSBzbG90PVwidHJpZ2dlclwiPlxuXHRcdFx0XHQ8ZGl2IDpjbGFzcz1cImNvbnRhY3RzTWVudUxvYWRpbmcgPyAnaWNvbi1sb2FkaW5nJyA6ICdpY29uLW1vcmUnXCIgOnN0eWxlPVwieyd3aWR0aCc6IHNpemUgKyAncHgnLCAnaGVpZ2h0Jzogc2l6ZSArICdweCd9XCIgLz5cblx0XHRcdDwvdGVtcGxhdGU+XG5cdFx0PC9Qb3BvdmVyPlxuXG5cdFx0PCEtLSBBdmF0YXIgc3RhdHVzIC0tPlxuXHRcdDxkaXYgdi1pZj1cInNob3dVc2VyU3RhdHVzSWNvbk9uQXZhdGFyXCIgY2xhc3M9XCJhdmF0YXJkaXZfX3VzZXItc3RhdHVzIGF2YXRhcmRpdl9fdXNlci1zdGF0dXMtLWljb25cIj5cblx0XHRcdHt7IHVzZXJTdGF0dXMuaWNvbiB9fVxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgdi1lbHNlLWlmPVwiY2FuRGlzcGxheVVzZXJTdGF0dXNcIlxuXHRcdFx0Y2xhc3M9XCJhdmF0YXJkaXZfX3VzZXItc3RhdHVzXCJcblx0XHRcdDpjbGFzcz1cIidhdmF0YXJkaXZfX3VzZXItc3RhdHVzLS0nICsgdXNlclN0YXR1cy5zdGF0dXNcIiAvPlxuXHRcdDxkaXYgdi1lbHNlLWlmPVwic3RhdHVzXCJcblx0XHRcdGNsYXNzPVwiYXZhdGFyZGl2X19zdGF0dXNcIlxuXHRcdFx0OmNsYXNzPVwiJ2F2YXRhcmRpdl9fc3RhdHVzLS0nICsgc3RhdHVzXCJcblx0XHRcdDpzdHlsZT1cInsgYmFja2dyb3VuZENvbG9yOiBgIyR7c3RhdHVzQ29sb3J9YCB9XCI+XG5cdFx0XHQ8IS0tIHRyaWFuZ2xlIC0tPlxuXHRcdFx0PHN2ZyB2LWlmPVwic3RhdHVzID09PSAnbmV1dHJhbCdcIlxuXHRcdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblx0XHRcdFx0d2lkdGg9XCIxMlwiXG5cdFx0XHRcdGhlaWdodD1cIjExXCJcblx0XHRcdFx0dmlld0JveD1cIjAgMCAzLjE3NSAyLjkxXCI+XG5cdFx0XHRcdDxwYXRoIGQ9XCJNMy4yMSAzLjA0M0guNDk0bC42NzktMS4xNzcuNjgtMS4xNzYuNjc4IDEuMTc2elwiXG5cdFx0XHRcdFx0OnN0eWxlPVwieyBmaWxsOiBgIyR7c3RhdHVzQ29sb3J9YCB9XCJcblx0XHRcdFx0XHRzdHJva2U9XCIjZmZmXCJcblx0XHRcdFx0XHRzdHJva2Utd2lkdGg9XCIuMjY1XCJcblx0XHRcdFx0XHRzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIC8+XG5cdFx0XHQ8L3N2Zz5cblx0XHQ8L2Rpdj5cblxuXHRcdDwhLS0gU2hvdyB0aGUgbGV0dGVyIGlmIG5vIGF2YXRhciBub3IgaWNvbiBjbGFzcyAtLT5cblx0XHQ8ZGl2IHYtaWY9XCJ1c2VyRG9lc05vdEV4aXN0ICYmICFpY29uQ2xhc3NcIiBjbGFzcz1cInVua25vd25cIj5cblx0XHRcdHt7IGluaXRpYWxzIH19XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCB7IGdldEJ1aWxkZXIgfSBmcm9tICdAbmV4dGNsb3VkL2Jyb3dzZXItc3RvcmFnZSdcbmltcG9ydCB7IGRpcmVjdGl2ZSBhcyBDbGlja091dHNpZGUgfSBmcm9tICd2LWNsaWNrLW91dHNpZGUnXG5pbXBvcnQgUG9wb3Zlck1lbnUgZnJvbSAnLi4vUG9wb3Zlck1lbnUnXG5pbXBvcnQgeyBnZXRDdXJyZW50VXNlciB9IGZyb20gJ0BuZXh0Y2xvdWQvYXV0aCdcbmltcG9ydCB7IHN1YnNjcmliZSwgdW5zdWJzY3JpYmUgfSBmcm9tICdAbmV4dGNsb3VkL2V2ZW50LWJ1cydcbmltcG9ydCBheGlvcyBmcm9tICdAbmV4dGNsb3VkL2F4aW9zJ1xuaW1wb3J0IHsgZ2VuZXJhdGVVcmwgfSBmcm9tICdAbmV4dGNsb3VkL3JvdXRlcidcbmltcG9ydCBUb29sdGlwIGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvVG9vbHRpcCdcbmltcG9ydCB1c2VybmFtZVRvQ29sb3IgZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3VzZXJuYW1lVG9Db2xvcidcbmltcG9ydCB7IHVzZXJTdGF0dXMgfSBmcm9tICcuLi8uLi9taXhpbnMnXG5pbXBvcnQgUG9wb3ZlciBmcm9tICcuLi9Qb3BvdmVyL1BvcG92ZXInXG5cbmNvbnN0IGJyb3dzZXJTdG9yYWdlID0gZ2V0QnVpbGRlcignbmV4dGNsb3VkJykucGVyc2lzdCgpLmJ1aWxkKClcblxuZnVuY3Rpb24gZ2V0VXNlckhhc0F2YXRhcih1c2VySWQpIHtcblx0Y29uc3QgZmxhZyA9IGJyb3dzZXJTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaGFzLWF2YXRhci4nICsgdXNlcklkKVxuXHRpZiAodHlwZW9mIGZsYWcgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIEJvb2xlYW4oZmxhZylcblx0fVxuXHRyZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBzZXRVc2VySGFzQXZhdGFyKHVzZXJJZCwgZmxhZykge1xuXHRpZiAodXNlcklkKSB7XG5cdFx0YnJvd3NlclN0b3JhZ2Uuc2V0SXRlbSgndXNlci1oYXMtYXZhdGFyLicgKyB1c2VySWQsIGZsYWcpXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnQXZhdGFyJyxcblxuXHRkaXJlY3RpdmVzOiB7XG5cdFx0dG9vbHRpcDogVG9vbHRpcCxcblx0XHRDbGlja091dHNpZGUsXG5cdH0sXG5cdGNvbXBvbmVudHM6IHtcblx0XHRQb3BvdmVyLFxuXHRcdFBvcG92ZXJNZW51LFxuXHR9LFxuXHRtaXhpbnM6IFt1c2VyU3RhdHVzXSxcblx0cHJvcHM6IHtcblx0XHQvKipcblx0XHQgKiBTZXQgYSBjdXN0b20gdXJsIHRvIHRoZSBhdmF0YXIgaW1hZ2Vcblx0XHQgKiBlaXRoZXIgdGhlIHVybCwgdXNlciBvciBkaXNwbGF5TmFtZSBwcm9wZXJ0eSBtdXN0IGJlIGRlZmluZWRcblx0XHQgKi9cblx0XHR1cmw6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IHVuZGVmaW5lZCxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFNldCBhIGNzcyBpY29uLWNsYXNzIGZvciBhbiBpY29uIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgYXZhdGFyLlxuXHRcdCAqL1xuXHRcdGljb25DbGFzczoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogdW5kZWZpbmVkLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0IHRoZSB1c2VyIGlkIHRvIGZldGNoIHRoZSBhdmF0YXJcblx0XHQgKiBlaXRoZXIgdGhlIHVybCwgdXNlciBvciBkaXNwbGF5TmFtZSBwcm9wZXJ0eSBtdXN0IGJlIGRlZmluZWRcblx0XHQgKi9cblx0XHR1c2VyOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiB1bmRlZmluZWQsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSB1c2VyLXN0YXR1c1xuXHRcdCAqL1xuXHRcdHNob3dVc2VyU3RhdHVzOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFdoZXRoZXIgb3Igbm90IHRvIHRoZSBzdGF0dXMtaWNvbiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIG9ubGluZS9hd2F5XG5cdFx0ICovXG5cdFx0c2hvd1VzZXJTdGF0dXNDb21wYWN0OiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFdoZW4gdGhlIHVzZXIgc3RhdHVzIHdhcyBwcmVsb2FkZWQgdmlhIGFub3RoZXIgc291cmNlIGl0IGNhbiBiZSBoYW5kZWQgaW4gd2l0aCB0aGlzIHByb3BlcnR5IHRvIHNhdmUgdGhlIHJlcXVlc3QuXG5cdFx0ICogSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3Qgc2V0IHRoZSBzdGF0dXMgd2lsbCBiZSBmZXRjaGVkIGF1dG9tYXRpY2FsbHkuXG5cdFx0ICogSWYgYSBwcmVsb2FkZWQgbm8tc3RhdHVzIGlzIGF2YWlsYWJsZSBwcm92aWRlIHRoaXMgb2JqZWN0IHdpdGggcHJvcGVydGllcyBcInN0YXR1c1wiLCBcImljb25cIiBhbmQgXCJtZXNzYWdlXCIgc2V0IHRvIG51bGwuXG5cdFx0ICovXG5cdFx0cHJlbG9hZGVkVXNlclN0YXR1czoge1xuXHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0ZGVmYXVsdDogdW5kZWZpbmVkLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogSXMgdGhlIHVzZXIgYSBndWVzdCB1c2VyICh0aGVuIHdlIGhhdmUgdG8gdXNlciBhIGRpZmZlcmVudCBlbmRwb2ludClcblx0XHQgKi9cblx0XHRpc0d1ZXN0OiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXQgYSBkaXNwbGF5IG5hbWUgdGhhdCB3aWxsIGJlIHJlbmRlcmVkIGFzIGEgdG9vbHRpcFxuXHRcdCAqIGVpdGhlciB0aGUgdXJsLCB1c2VyIG9yIGRpc3BsYXlOYW1lIHByb3BlcnR5IG11c3QgYmUgZGVmaW5lZFxuXHRcdCAqIHNwZWNpZnkganVzdCB0aGUgZGlzcGxheW5hbWUgdG8gZ2VuZXJhdGUgYSBwbGFjZWhvbGRlciBhdmF0YXIgd2l0aG91dFxuXHRcdCAqIHRyeWluZyB0byBmZXRjaCB0aGUgYXZhdGFyIGJhc2VkIG9uIHRoZSB1c2VyIGlkXG5cdFx0ICovXG5cdFx0ZGlzcGxheU5hbWU6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IHVuZGVmaW5lZCxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFNldCBhIHNpemUgaW4gcHggZm9yIHRoZSByZW5kZXJlZCBhdmF0YXJcblx0XHQgKi9cblx0XHRzaXplOiB7XG5cdFx0XHR0eXBlOiBOdW1iZXIsXG5cdFx0XHRkZWZhdWx0OiAzMixcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFBsYWNlaG9sZGVyIGF2YXRhcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCB3aGVuIHRoaXMgaXMgc2V0IHRvIHRydWVcblx0XHQgKi9cblx0XHRhbGxvd1BsYWNlaG9sZGVyOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIERpc2FibGUgdGhlIHRvb2x0aXBcblx0XHQgKi9cblx0XHRkaXNhYmxlVG9vbHRpcDoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRGlzYWJsZSB0aGUgbWVudVxuXHRcdCAqL1xuXHRcdGRpc2FibGVNZW51OiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBEZWNsYXJlcyBhIGN1c3RvbSB0b29sdGlwIHdoZW4gbm90IG51bGxcblx0XHQgKiBGYWxsYmFjayB3aWxsIGJlIHRoZSBkaXNwbGF5TmFtZVxuXHRcdCAqXG5cdFx0ICogcmVxdWlyZXMgZGlzYWJsZVRvb2x0aXAgbm90IHRvIGJlIHNldCB0byB0cnVlXG5cdFx0ICovXG5cdFx0dG9vbHRpcE1lc3NhZ2U6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBEZWNsYXJlcyB1c2VybmFtZSBpcyBub3QgYSB1c2VyJ3MgbmFtZSwgd2hlbiB0cnVlLlxuXHRcdCAqIFByZXZlbnRzIGxvYWRpbmcgdXNlcidzIGF2YXRhciBmcm9tIHNlcnZlciBhbmQgZm9yY2VzIGdlbmVyYXRpbmcgY29sb3JlZCBpbml0aWFscyxcblx0XHQgKiBpLmUuIGlmIHRoZSB1c2VyIGlzIGEgZ3JvdXBcblx0XHQgKi9cblx0XHRpc05vVXNlcjoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBERVBSRUNBVEVEIVxuXHRcdCAqIFRoaXMgcHJvcCB3aWxsIGJlIHJlbW92ZWQgd2l0aCBuYy92dWUgMy4wXG5cdFx0ICpcblx0XHQgKiBEZWNsYXJlcyBhIHN0YXR1cyBpbmRpY2F0b3Igb24gdGhlIGF2YXRhclxuXHRcdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZSBgcG9zaXRpdmVgLCBgbmVnYXRpdmVgLCBgbmV1dHJhbGBcblx0XHQgKi9cblx0XHRzdGF0dXM6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR2YWxpZGF0b3I6ICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKHZhbHVlKSB7XG5cdFx0XHRcdGNhc2UgJ3Bvc2l0aXZlJzpcblx0XHRcdFx0Y2FzZSAnbmVnYXRpdmUnOlxuXHRcdFx0XHRjYXNlICduZXV0cmFsJzpcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIERlY2xhcmVzIGEgZGlmZmVyZW50IGNvbG9yIHRvIGJlIHVzZWQgd2l0aCB0aGUgc3RhdHVzIGluZGljYXRvclxuXHRcdCAqL1xuXHRcdHN0YXR1c0NvbG9yOiB7XG5cdFx0XHR0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHZhbGlkYXRvcjogdmFsdWUgPT4ge1xuXHRcdFx0XHRyZXR1cm4gL14oW2EtZjAtOV17M30pezEsMn0kL2kudGVzdCh2YWx1ZSlcblx0XHRcdH0sXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBDaG9vc2UgdGhlIGF2YXRhciBtZW51IGFsaWdubWVudC5cblx0XHQgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAuXG5cdFx0ICovXG5cdFx0bWVudVBvc2l0aW9uOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnY2VudGVyJyxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2VsZWN0b3IgZm9yIHRoZSBwb3BvdmVyIG1lbnUgY29udGFpbmVyXG5cdFx0ICovXG5cdFx0bWVudUNvbnRhaW5lcjoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJ2JvZHknLFxuXHRcdH0sXG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGF2YXRhclVybExvYWRlZDogbnVsbCxcblx0XHRcdGF2YXRhclNyY1NldExvYWRlZDogbnVsbCxcblx0XHRcdHVzZXJEb2VzTm90RXhpc3Q6IGZhbHNlLFxuXHRcdFx0aXNBdmF0YXJMb2FkZWQ6IGZhbHNlLFxuXHRcdFx0aXNNZW51TG9hZGVkOiBmYWxzZSxcblx0XHRcdGNvbnRhY3RzTWVudUxvYWRpbmc6IGZhbHNlLFxuXHRcdFx0Y29udGFjdHNNZW51QWN0aW9uczogW10sXG5cdFx0XHRjb250YWN0c01lbnVPcGVuU3RhdGU6IGZhbHNlLFxuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHRjYW5EaXNwbGF5VXNlclN0YXR1cygpIHtcblx0XHRcdHJldHVybiB0aGlzLnNob3dVc2VyU3RhdHVzXG5cdFx0XHRcdCYmIHRoaXMuaGFzU3RhdHVzXG5cdFx0XHRcdCYmIFsnb25saW5lJywgJ2F3YXknLCAnZG5kJ10uaW5jbHVkZXModGhpcy51c2VyU3RhdHVzLnN0YXR1cylcblx0XHR9LFxuXHRcdHNob3dVc2VyU3RhdHVzSWNvbk9uQXZhdGFyKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuc2hvd1VzZXJTdGF0dXNcblx0XHRcdFx0JiYgdGhpcy5zaG93VXNlclN0YXR1c0NvbXBhY3Rcblx0XHRcdFx0JiYgdGhpcy5oYXNTdGF0dXNcblx0XHRcdFx0JiYgdGhpcy51c2VyU3RhdHVzLnN0YXR1cyAhPT0gJ2RuZCdcblx0XHRcdFx0JiYgdGhpcy51c2VyU3RhdHVzLmljb25cblx0XHR9LFxuXHRcdGdldFVzZXJJZGVudGlmaWVyKCkge1xuXHRcdFx0aWYgKHRoaXMuaXNEaXNwbGF5TmFtZURlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZGlzcGxheU5hbWVcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLmlzVXNlckRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMudXNlclxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICcnXG5cdFx0fSxcblx0XHRpc1VzZXJEZWZpbmVkKCkge1xuXHRcdFx0cmV0dXJuIHR5cGVvZiB0aGlzLnVzZXIgIT09ICd1bmRlZmluZWQnXG5cdFx0fSxcblx0XHRpc0Rpc3BsYXlOYW1lRGVmaW5lZCgpIHtcblx0XHRcdHJldHVybiB0eXBlb2YgdGhpcy5kaXNwbGF5TmFtZSAhPT0gJ3VuZGVmaW5lZCdcblx0XHR9LFxuXHRcdGlzVXJsRGVmaW5lZCgpIHtcblx0XHRcdHJldHVybiB0eXBlb2YgdGhpcy51cmwgIT09ICd1bmRlZmluZWQnXG5cdFx0fSxcblx0XHRoYXNNZW51KCkge1xuXHRcdFx0aWYgKHRoaXMuZGlzYWJsZU1lbnUpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5pc01lbnVMb2FkZWQpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMubWVudS5sZW5ndGggPiAwXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gISh0aGlzLnVzZXIgPT09IGdldEN1cnJlbnRVc2VyKCk/LnVpZCB8fCB0aGlzLnVzZXJEb2VzTm90RXhpc3QgfHwgdGhpcy51cmwpXG5cdFx0fSxcblx0XHRzaG91bGRTaG93UGxhY2Vob2xkZXIoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hbGxvd1BsYWNlaG9sZGVyICYmIChcblx0XHRcdFx0dGhpcy51c2VyRG9lc05vdEV4aXN0KVxuXHRcdH0sXG5cdFx0YXZhdGFyU3R5bGUoKSB7XG5cdFx0XHRjb25zdCBzdHlsZSA9IHtcblx0XHRcdFx0d2lkdGg6IHRoaXMuc2l6ZSArICdweCcsXG5cdFx0XHRcdGhlaWdodDogdGhpcy5zaXplICsgJ3B4Jyxcblx0XHRcdFx0bGluZUhlaWdodDogdGhpcy5zaXplICsgJ3B4Jyxcblx0XHRcdFx0Zm9udFNpemU6IE1hdGgucm91bmQodGhpcy5zaXplICogMC41NSkgKyAncHgnLFxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXRoaXMuaWNvbkNsYXNzICYmICF0aGlzLmF2YXRhclNyY1NldExvYWRlZCkge1xuXHRcdFx0XHRjb25zdCByZ2IgPSB1c2VybmFtZVRvQ29sb3IodGhpcy5nZXRVc2VySWRlbnRpZmllcilcblx0XHRcdFx0c3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYignICsgcmdiLnIgKyAnLCAnICsgcmdiLmcgKyAnLCAnICsgcmdiLmIgKyAnKSdcblx0XHRcdH1cblx0XHRcdHJldHVybiBzdHlsZVxuXHRcdH0sXG5cdFx0dG9vbHRpcCgpIHtcblx0XHRcdGlmICh0aGlzLmRpc2FibGVUb29sdGlwKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMudG9vbHRpcE1lc3NhZ2UpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMudG9vbHRpcE1lc3NhZ2Vcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXMuZGlzcGxheU5hbWVcblx0XHR9LFxuXHRcdGluaXRpYWxzKCkge1xuXHRcdFx0bGV0IGluaXRpYWxzXG5cdFx0XHRpZiAodGhpcy5zaG91bGRTaG93UGxhY2Vob2xkZXIpIHtcblx0XHRcdFx0Y29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlcklkZW50aWZpZXJcblx0XHRcdFx0Y29uc3QgaWR4ID0gdXNlci5pbmRleE9mKCcgJylcblx0XHRcdFx0aWYgKHVzZXIgPT09ICcnKSB7XG5cdFx0XHRcdFx0aW5pdGlhbHMgPSAnPydcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpbml0aWFscyA9IFN0cmluZy5mcm9tQ29kZVBvaW50KHVzZXIuY29kZVBvaW50QXQoMCkpXG5cdFx0XHRcdFx0aWYgKGlkeCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdGluaXRpYWxzID0gaW5pdGlhbHMuY29uY2F0KFN0cmluZy5mcm9tQ29kZVBvaW50KHVzZXIuY29kZVBvaW50QXQoaWR4ICsgMSkpKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGluaXRpYWxzLnRvVXBwZXJDYXNlKClcblx0XHR9LFxuXHRcdG1lbnUoKSB7XG5cdFx0XHRjb25zdCBhY3Rpb25zID0gdGhpcy5jb250YWN0c01lbnVBY3Rpb25zLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGhyZWY6IGl0ZW0uaHlwZXJsaW5rLFxuXHRcdFx0XHRcdGljb246IGl0ZW0uaWNvbixcblx0XHRcdFx0XHRsb25ndGV4dDogaXRlbS50aXRsZSxcblx0XHRcdFx0fVxuXHRcdFx0fSlcblxuXHRcdFx0ZnVuY3Rpb24gZXNjYXBlKGh0bWwpIHtcblx0XHRcdFx0Y29uc3QgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGh0bWwpXG5cdFx0XHRcdGNvbnN0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJylcblx0XHRcdFx0cC5hcHBlbmRDaGlsZCh0ZXh0KVxuXHRcdFx0XHRyZXR1cm4gcC5pbm5lckhUTUxcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuc2hvd1VzZXJTdGF0dXMgJiYgKHRoaXMudXNlclN0YXR1cy5pY29uIHx8IHRoaXMudXNlclN0YXR1cy5tZXNzYWdlKSkge1xuXHRcdFx0XHRyZXR1cm4gW3tcblx0XHRcdFx0XHRocmVmOiAnIycsXG5cdFx0XHRcdFx0aWNvbjogYGRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48dGV4dCB4PScwJyB5PScxNCcgZm9udC1zaXplPScxNCc+JHtlc2NhcGUodGhpcy51c2VyU3RhdHVzLmljb24pfTwvdGV4dD48L3N2Zz5gLFxuXHRcdFx0XHRcdHRleHQ6IGAke3RoaXMudXNlclN0YXR1cy5tZXNzYWdlfWAsXG5cdFx0XHRcdH1dLmNvbmNhdChhY3Rpb25zKVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gYWN0aW9uc1xuXHRcdH0sXG5cdH0sXG5cblx0d2F0Y2g6IHtcblx0XHR1cmwoKSB7XG5cdFx0XHR0aGlzLnVzZXJEb2VzTm90RXhpc3QgPSBmYWxzZVxuXHRcdFx0dGhpcy5sb2FkQXZhdGFyVXJsKClcblx0XHR9LFxuXHRcdHVzZXIoKSB7XG5cdFx0XHR0aGlzLnVzZXJEb2VzTm90RXhpc3QgPSBmYWxzZVxuXHRcdFx0dGhpcy5pc01lbnVMb2FkZWQgPSBmYWxzZVxuXHRcdFx0dGhpcy5sb2FkQXZhdGFyVXJsKClcblx0XHR9LFxuXHR9LFxuXG5cdG1vdW50ZWQoKSB7XG5cdFx0dGhpcy5sb2FkQXZhdGFyVXJsKClcblx0XHRpZiAodGhpcy5zaG93VXNlclN0YXR1cyAmJiB0aGlzLnVzZXIgJiYgIXRoaXMuaXNOb1VzZXIpIHtcblx0XHRcdGlmICghdGhpcy5wcmVsb2FkZWRVc2VyU3RhdHVzKSB7XG5cdFx0XHRcdHRoaXMuZmV0Y2hVc2VyU3RhdHVzKHRoaXMudXNlcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudXNlclN0YXR1cy5zdGF0dXMgPSB0aGlzLnByZWxvYWRlZFVzZXJTdGF0dXMuc3RhdHVzIHx8ICcnXG5cdFx0XHRcdHRoaXMudXNlclN0YXR1cy5tZXNzYWdlID0gdGhpcy5wcmVsb2FkZWRVc2VyU3RhdHVzLm1lc3NhZ2UgfHwgJydcblx0XHRcdFx0dGhpcy51c2VyU3RhdHVzLmljb24gPSB0aGlzLnByZWxvYWRlZFVzZXJTdGF0dXMuaWNvbiB8fCAnJ1xuXHRcdFx0XHR0aGlzLmhhc1N0YXR1cyA9IHRoaXMucHJlbG9hZGVkVXNlclN0YXR1cy5zdGF0dXMgIT09IG51bGxcblx0XHRcdH1cblx0XHRcdHN1YnNjcmliZSgndXNlcl9zdGF0dXM6c3RhdHVzLnVwZGF0ZWQnLCB0aGlzLmhhbmRsZVVzZXJTdGF0dXNVcGRhdGVkKVxuXHRcdH1cblx0fSxcblxuXHRiZWZvcmVEZXN0cm95ZWQoKSB7XG5cdFx0aWYgKHRoaXMuc2hvd1VzZXJTdGF0dXMgJiYgdGhpcy51c2VyICYmICF0aGlzLmlzTm9Vc2VyKSB7XG5cdFx0XHR1bnN1YnNjcmliZSgndXNlcl9zdGF0dXM6c3RhdHVzLnVwZGF0ZWQnLCB0aGlzLmhhbmRsZVVzZXJTdGF0dXNVcGRhdGVkKVxuXHRcdH1cblx0fSxcblxuXHRtZXRob2RzOiB7XG5cdFx0aGFuZGxlVXNlclN0YXR1c1VwZGF0ZWQoc3RhdGUpIHtcblx0XHRcdGlmICh0aGlzLnVzZXIgPT09IHN0YXRlLnVzZXJJZCkge1xuXHRcdFx0XHR0aGlzLnVzZXJTdGF0dXMgPSB7XG5cdFx0XHRcdFx0c3RhdHVzOiBzdGF0ZS5zdGF0dXMsXG5cdFx0XHRcdFx0aWNvbjogc3RhdGUuaWNvbixcblx0XHRcdFx0XHRtZXNzYWdlOiBzdGF0ZS5tZXNzYWdlLFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGFzeW5jIHRvZ2dsZU1lbnUoKSB7XG5cdFx0XHRpZiAoIXRoaXMuaGFzTWVudSkge1xuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblx0XHRcdGlmICghdGhpcy5jb250YWN0c01lbnVPcGVuU3RhdGUpIHtcblx0XHRcdFx0YXdhaXQgdGhpcy5mZXRjaENvbnRhY3RzTWVudSgpXG5cdFx0XHR9XG5cdFx0XHR0aGlzLmNvbnRhY3RzTWVudU9wZW5TdGF0ZSA9ICF0aGlzLmNvbnRhY3RzTWVudU9wZW5TdGF0ZVxuXHRcdH0sXG5cdFx0Y2xvc2VNZW51KCkge1xuXHRcdFx0dGhpcy5jb250YWN0c01lbnVPcGVuU3RhdGUgPSBmYWxzZVxuXHRcdH0sXG5cdFx0YXN5bmMgZmV0Y2hDb250YWN0c01lbnUoKSB7XG5cdFx0XHR0aGlzLmNvbnRhY3RzTWVudUxvYWRpbmcgPSB0cnVlXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB1c2VyID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudXNlcilcblx0XHRcdFx0Y29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5wb3N0KGdlbmVyYXRlVXJsKCdjb250YWN0c21lbnUvZmluZE9uZScpLCBgc2hhcmVUeXBlPTAmc2hhcmVXaXRoPSR7dXNlcn1gKVxuXHRcdFx0XHR0aGlzLmNvbnRhY3RzTWVudUFjdGlvbnMgPSBkYXRhLnRvcEFjdGlvbiA/IFtkYXRhLnRvcEFjdGlvbl0uY29uY2F0KGRhdGEuYWN0aW9ucykgOiBkYXRhLmFjdGlvbnNcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhpcy5jb250YWN0c01lbnVPcGVuU3RhdGUgPSBmYWxzZVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5jb250YWN0c01lbnVMb2FkaW5nID0gZmFsc2Vcblx0XHRcdHRoaXMuaXNNZW51TG9hZGVkID0gdHJ1ZVxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgYXZhdGFyIGxvYWRpbmcgaWYgdXNlciBvciB1cmwgZGVmaW5lZFxuXHRcdCAqL1xuXHRcdGxvYWRBdmF0YXJVcmwoKSB7XG5cdFx0XHR0aGlzLmlzQXZhdGFyTG9hZGVkID0gZmFsc2VcblxuXHRcdFx0LyoqIE9ubHkgcnVuIGF2YXRhciBpbWFnZSBsb2FkaW5nIGlmIGVpdGhlciB1c2VyIG9yIHVybCBwcm9wZXJ0eSBpcyBkZWZpbmVkICovXG5cdFx0XHRpZiAoIXRoaXMuaXNVcmxEZWZpbmVkICYmICghdGhpcy5pc1VzZXJEZWZpbmVkIHx8IHRoaXMuaXNOb1VzZXIpKSB7XG5cdFx0XHRcdHRoaXMuaXNBdmF0YXJMb2FkZWQgPSB0cnVlXG5cdFx0XHRcdHRoaXMudXNlckRvZXNOb3RFeGlzdCA9IHRydWVcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cblx0XHRcdC8vIERpcmVjdGx5IHVzZSB0aGUgdXJsIGlmIGRlZmluZWRcblx0XHRcdGlmICh0aGlzLmlzVXJsRGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzLnVwZGF0ZUltYWdlSWZWYWxpZCh0aGlzLnVybClcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGF2YXRhclVybCA9IHRoaXMuYXZhdGFyVXJsR2VuZXJhdG9yKHRoaXMudXNlciwgdGhpcy5zaXplKVxuXHRcdFx0Y29uc3Qgc3Jjc2V0ID0gW1xuXHRcdFx0XHRhdmF0YXJVcmwgKyAnIDF4Jyxcblx0XHRcdFx0dGhpcy5hdmF0YXJVcmxHZW5lcmF0b3IodGhpcy51c2VyLCB0aGlzLnNpemUgKiAyKSArICcgMngnLFxuXHRcdFx0XHR0aGlzLmF2YXRhclVybEdlbmVyYXRvcih0aGlzLnVzZXIsIHRoaXMuc2l6ZSAqIDQpICsgJyA0eCcsXG5cdFx0XHRdLmpvaW4oJywgJylcblxuXHRcdFx0dGhpcy51cGRhdGVJbWFnZUlmVmFsaWQoYXZhdGFyVXJsLCBzcmNzZXQpXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEdlbmVyYXRlIGFuIGF2YXRhciB1cmwgZnJvbSB0aGUgc2VydmVyJ3MgYXZhdGFyIGVuZHBvaW50XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdXNlciB0aGUgdXNlciBpZFxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIHRoZSBkZXNpcmVkIHNpemVcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGF2YXRhclVybEdlbmVyYXRvcih1c2VyLCBzaXplKSB7XG5cdFx0XHRsZXQgdXJsID0gJy9hdmF0YXIve3VzZXJ9L3tzaXplfSdcblx0XHRcdGlmICh0aGlzLmlzR3Vlc3QpIHtcblx0XHRcdFx0dXJsID0gJy9hdmF0YXIvZ3Vlc3Qve3VzZXJ9L3tzaXplfSdcblx0XHRcdH1cblxuXHRcdFx0bGV0IGF2YXRhclVybCA9IGdlbmVyYXRlVXJsKFxuXHRcdFx0XHR1cmwsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1c2VyLFxuXHRcdFx0XHRcdHNpemUsXG5cdFx0XHRcdH0pXG5cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2Vcblx0XHRcdGlmICh1c2VyID09PSBnZXRDdXJyZW50VXNlcigpPy51aWQgJiYgdHlwZW9mIG9jX3VzZXJjb25maWcgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdGF2YXRhclVybCArPSAnP3Y9JyArIG9jX3VzZXJjb25maWcuYXZhdGFyLnZlcnNpb25cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGF2YXRhclVybFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBDaGVjayBpZiB0aGUgcHJvdmlkZWQgdXJsIGlzIHZhbGlkIGFuZCB1cGRhdGUgQXZhdGFyIGlmIHNvXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdXJsIHRoZSBhdmF0YXIgdXJsXG5cdFx0ICogQHBhcmFtIHthcnJheX0gc3Jjc2V0IHRoZSBhdmF0YXIgc3Jjc2V0XG5cdFx0ICovXG5cdFx0dXBkYXRlSW1hZ2VJZlZhbGlkKHVybCwgc3Jjc2V0ID0gbnVsbCkge1xuXHRcdFx0Ly8gc2tpcCBsb2FkaW5nXG5cdFx0XHRjb25zdCB1c2VySGFzQXZhdGFyID0gZ2V0VXNlckhhc0F2YXRhcih0aGlzLnVzZXIpXG5cdFx0XHRpZiAodGhpcy5pc1VzZXJEZWZpbmVkICYmIHR5cGVvZiB1c2VySGFzQXZhdGFyID09PSAnYm9vbGVhbicpIHtcblx0XHRcdFx0dGhpcy5pc0F2YXRhckxvYWRlZCA9IHRydWVcblx0XHRcdFx0dGhpcy5hdmF0YXJVcmxMb2FkZWQgPSB1cmxcblx0XHRcdFx0aWYgKHNyY3NldCkge1xuXHRcdFx0XHRcdHRoaXMuYXZhdGFyU3JjU2V0TG9hZGVkID0gc3Jjc2V0XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHVzZXJIYXNBdmF0YXIgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhpcy51c2VyRG9lc05vdEV4aXN0ID0gdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKVxuXHRcdFx0aW1nLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5hdmF0YXJVcmxMb2FkZWQgPSB1cmxcblx0XHRcdFx0aWYgKHNyY3NldCkge1xuXHRcdFx0XHRcdHRoaXMuYXZhdGFyU3JjU2V0TG9hZGVkID0gc3Jjc2V0XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5pc0F2YXRhckxvYWRlZCA9IHRydWVcblx0XHRcdFx0Ly8gcmUtZ2V0IHRvIGF2b2lkIGNvbmN1cnJlbnQgYWNjZXNzXG5cdFx0XHRcdHNldFVzZXJIYXNBdmF0YXIodGhpcy51c2VyLCB0cnVlKVxuXHRcdFx0fVxuXHRcdFx0aW1nLm9uZXJyb3IgPSAoKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZGVidWcoJ0ludmFsaWQgYXZhdGFyIHVybCcsIHVybClcblx0XHRcdFx0Ly8gQXZhdGFyIGlzIGludmFsaWQsIHJlc2V0XG5cdFx0XHRcdHRoaXMuYXZhdGFyVXJsTG9hZGVkID0gbnVsbFxuXHRcdFx0XHR0aGlzLmF2YXRhclNyY1NldExvYWRlZCA9IG51bGxcblxuXHRcdFx0XHR0aGlzLnVzZXJEb2VzTm90RXhpc3QgPSB0cnVlXG5cdFx0XHRcdHRoaXMuaXNBdmF0YXJMb2FkZWQgPSBmYWxzZVxuXHRcdFx0XHRzZXRVc2VySGFzQXZhdGFyKHRoaXMudXNlciwgZmFsc2UpXG5cdFx0XHR9XG5cblx0XHRcdGlmIChzcmNzZXQpIHtcblx0XHRcdFx0aW1nLnNyY3NldCA9IHNyY3NldFxuXHRcdFx0fVxuXHRcdFx0aW1nLnNyYyA9IHVybFxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZCBsYW5nPVwic2Nzc1wiPlxuQGltcG9ydCAnLi4vLi4vZm9udHMvc2Nzcy9pY29uZm9udC12dWUnO1xuXG4uYXZhdGFyZGl2IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0Ji0tdW5rbm93biB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbWF4Y29udHJhc3QpO1xuXHR9XG5cblx0Jjpub3QoJi0tdW5rbm93bikge1xuXHRcdC8vIFdoaXRlIGJhY2tncm91bmQgZm9yIGF2YXRhcnMgd2l0aCB0cmFuc3BhcmVuY3lcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG5cdFx0Ym9keS50aGVtZS0tZGFyayAmIHtcblx0XHRcdC8vIEFuZCBibGFjayBiYWNrZ3JvdW5kIGluIGRhcmsgbW9kZSwgYXMgaXQgc2hpbmVzIHRocm91Z2ggb24gaG92ZXIgb2YgdGhlIG1lbnVcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDAgIWltcG9ydGFudDtcblx0XHR9XG5cdFx0Ym94LXNoYWRvdzogMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuMDUpIGluc2V0O1xuXHR9XG5cblx0Ji0td2l0aC1tZW51IHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ojp2LWRlZXAgLnRyaWdnZXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHR9XG5cdFx0Lmljb24tbW9yZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cblx0XHRcdEBpbmNsdWRlIGljb25mb250KCdtb3JlJyk7XG5cdFx0XHQmOjpiZWZvcmUge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdH1cblx0XHR9XG5cdFx0Jjpmb2N1cyxcblx0XHQmOmhvdmVyIHtcblx0XHRcdC5pY29uLW1vcmUge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdFx0aW1nIHtcblx0XHRcdFx0b3BhY2l0eTogMC4zO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQuaWNvbi1tb3JlLFxuXHRcdGltZyB7XG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayk7XG5cdFx0fVxuXHR9XG5cblx0PiAudW5rbm93biB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xuXHR9XG5cblx0aW1nIHtcblx0XHQvLyBDb3ZlciBlbnRpcmUgYXJlYVxuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHQvLyBLZWVwIHJhdGlvXG5cdFx0b2JqZWN0LWZpdDogY292ZXI7XG5cdH1cblxuXHQuYXZhdGFyZGl2X19zdGF0dXMge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDIycHg7XG5cdFx0bGVmdDogMjJweDtcblx0XHR3aWR0aDogMTBweDtcblx0XHRoZWlnaHQ6IDEwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7XG5cdFx0YmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcblx0XHQmLS1wb3NpdGl2ZSB7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcblx0XHR9XG5cdFx0Ji0tbmVnYXRpdmUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuXHRcdH1cblx0XHQmLS1uZXV0cmFsIHtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRzdmcge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRvcDogLTNweDtcblx0XHRcdFx0bGVmdDogLTJweDtcblx0XHRcdFx0cGF0aCB7XG5cdFx0XHRcdFx0ZmlsbDogI2FhYTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IC00cHg7XG5cdFx0Ym90dG9tOiAtNHB4O1xuXHRcdGhlaWdodDogMThweDtcblx0XHR3aWR0aDogMThweDtcblx0XHRsaW5lLWhlaWdodDogMTVweDtcblx0XHRmb250LXNpemU6IHZhcigtLWRlZmF1bHQtZm9udC1zaXplKTtcblx0XHRib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXG5cdFx0LmFjbGk6aG92ZXIgJiB7XG5cdFx0XHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaG92ZXIpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1ob3Zlcik7XG5cdFx0fVxuXHRcdC5hY2xpLmFjdGl2ZSAmIHtcblx0XHRcdGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcblx0XHR9XG5cblx0XHQmLS1vbmxpbmV7XG5cdFx0XHRAaW5jbHVkZSBpY29uZm9udCgndXNlci1zdGF0dXMtb25saW5lJyk7XG5cdFx0XHRjb2xvcjogIzQ5YjM4Mjtcblx0XHR9XG5cdFx0Ji0tZG5ke1xuXHRcdFx0QGluY2x1ZGUgaWNvbmZvbnQoJ3VzZXItc3RhdHVzLWRuZCcpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblx0XHRcdGNvbG9yOiAjZWQ0ODRjO1xuXHRcdH1cblx0XHQmLS1hd2F5e1xuXHRcdFx0QGluY2x1ZGUgaWNvbmZvbnQoJ3VzZXItc3RhdHVzLWF3YXknKTtcblx0XHRcdGNvbG9yOiAjZjRhMzMxO1xuXHRcdH1cblx0XHQmLS1pY29uIHtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdH1cblx0fVxuXG5cdC5wb3BvdmVybWVudS13cmFwcGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG59XG5cbi5hdmF0YXItY2xhc3MtaWNvbiB7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrZXIpO1xuXHRoZWlnaHQ6IDEwMCU7XG59XG5cbjwvc3R5bGU+XG4iLCI8IS0tXG4gIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMjAgUmFpbXVuZCBTY2hsw7zDn2xlciA8cmFpbXVuZC5zY2hsdWVzc2xlckBtYWlsYm94Lm9yZz5cbiAgLVxuICAtIEBhdXRob3IgUmFpbXVuZCBTY2hsw7zDn2xlciA8cmFpbXVuZC5zY2hsdWVzc2xlckBtYWlsYm94Lm9yZz5cbiAgLVxuICAtIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAgLSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAtIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICAtIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICAtXG4gIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gIC0gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAgLVxuICAtLT5cblxuPGRvY3M+XG5cbiMjIyBHZW5lcmFsIGRlc2NyaXB0aW9uXG5cbkhpZ2hsaWdodCBhIHN0cmluZyB3aXRoIGh0bWwgJmx0O3N0cm9uZyZndDsuIEFjY2VwdHMgYSBzdWJzdHJpbmcgdG8gaGlnaGxpZ2h0IG9yIGFuIGFycmF5IHdpdGggcmFuZ2VzLlxuXG4jIyMgVXNhZ2VcblxuYGBgdnVlXG48dGVtcGxhdGU+XG5cdDxkaXY+XG5cdFx0PEhpZ2hsaWdodCB0ZXh0PVwiSGlnaGxpZ2h0IG1lIHBsZWFzZSFcIiBzZWFyY2g9XCJtZVwiIC8+XG5cdFx0PGJyIC8+XG5cdFx0PEhpZ2hsaWdodCB0ZXh0PVwiSGlnaGxpZ2h0IG1lIHBsZWFzZSFcIiA6aGlnaGxpZ2h0PVwiW3sgc3RhcnQ6IDQsIGVuZDogMTIgfV1cIiAvPlxuXHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5gYGBcbjwvZG9jcz5cblxuPHNjcmlwdD5cbmltcG9ydCBGaW5kUmFuZ2VzIGZyb20gJy4uLy4uL3V0aWxzL0ZpbmRSYW5nZXMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0bmFtZTogJ0hpZ2hsaWdodCcsXG5cdHByb3BzOiB7XG5cdFx0LyoqXG5cdFx0ICogVGhlIHN0cmluZyB0byBkaXNwbGF5XG5cdFx0ICovXG5cdFx0dGV4dDoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJycsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBUaGUgc3RyaW5nIHRvIG1hdGNoIGFuZCBoaWdobGlnaHRcblx0XHQgKi9cblx0XHRzZWFyY2g6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6ICcnLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogVGhlIHJhbmdlcyB0byBoaWdobGlnaHQsIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgc2VhcmNoIHByb3AuXG5cdFx0ICovXG5cdFx0aGlnaGxpZ2h0OiB7XG5cdFx0XHR0eXBlOiBBcnJheSxcblx0XHRcdGRlZmF1bHQ6ICgpID0+IFtdLFxuXHRcdH0sXG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0LyoqXG5cdFx0ICogVGhlIGluZGljZSByYW5nZXMgd2hpY2ggc2hvdWxkIGJlIGhpZ2hsaWdodGVkLlxuXHRcdCAqIElmIGFuIGFycmF5IHdpdGggcmFuZ2VzIGlzIHByb3ZpZGVkLCB3ZSB1c2UgaXQuIE90aGVyd2lzZVxuXHRcdCAqIHdlIGNhbGN1bGF0ZSBpdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc3Vic3RyaW5nIHRvIGhpZ2hsaWdodC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtBcnJheX0gVGhlIGFycmF5IG9mIHJhbmdlcyB0byBoaWdobGlnaHRcblx0XHQgKi9cblx0XHRyYW5nZXMoKSB7XG5cdFx0XHRsZXQgcmFuZ2VzID0gW11cblx0XHRcdC8vIElmIHRoZSBzZWFyY2ggdGVybSBhbmQgdGhlIGhpZ2hsaWdodCBhcnJheSBpcyBlbXB0eSwgcmV0dXJuIGVhcmx5IHdpdGggZW1wdHkgYXJyYXlcblx0XHRcdGlmICghdGhpcy5zZWFyY2ggJiYgdGhpcy5oaWdobGlnaHQubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHJldHVybiByYW5nZXNcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhlcmUgYXJlIHJhbmdlcyB0byBoaWdobGlnaHQgcHJvdmlkZWQsIHdlIHVzZSB0aGlzIGFycmF5LlxuXHRcdFx0aWYgKHRoaXMuaGlnaGxpZ2h0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cmFuZ2VzID0gdGhpcy5oaWdobGlnaHRcblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBjaGVjayB0aGUgdGV4dCB0byBoaWdobGlnaHQgZm9yIG1hdGNoZXMgb2YgdGhlIHNlYXJjaCB0ZXJtLlxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmFuZ2VzID0gRmluZFJhbmdlcyh0aGlzLnRleHQsIHRoaXMuc2VhcmNoKVxuXHRcdFx0fVxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFZhbGlkYXRlIHRoZSByYW5nZXMgYXJyYXkgdG8gYmUgd2l0aGluIHRoZSBzdHJpbmcgbGVuZ3RoXG5cdFx0XHQgKiBhbmQgZGlzY2FyZCByYW5nZXMgd2hpY2ggYXJlIGNvbXBsZXRlbHkgb3V0IG9mIGJvbmRzLlxuXHRcdFx0ICovXG5cdFx0XHRyZXR1cm4gcmFuZ2VzLnJlZHVjZSgodmFsaWRSYW5nZXMsIHJhbmdlKSA9PiB7XG5cdFx0XHRcdGlmIChyYW5nZS5zdGFydCA8IHRoaXMudGV4dC5sZW5ndGggJiYgcmFuZ2UuZW5kID4gMCkge1xuXHRcdFx0XHRcdHZhbGlkUmFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0c3RhcnQ6IChyYW5nZS5zdGFydCA8IDApID8gMCA6IHJhbmdlLnN0YXJ0LFxuXHRcdFx0XHRcdFx0ZW5kOiAocmFuZ2UuZW5kID4gdGhpcy50ZXh0Lmxlbmd0aCkgPyB0aGlzLnRleHQubGVuZ3RoIDogcmFuZ2UuZW5kLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZhbGlkUmFuZ2VzXG5cdFx0XHR9LCBbXSlcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIENhbGN1bGF0ZSB0aGUgZGlmZmVyZW50IGNodW5rcyB0byBzaG93IGJhc2VkIG9uIHRoZSByYW5nZXMgdG8gaGlnaGxpZ2h0LlxuXHRcdCAqXG5cdFx0ICogQHJldHVybnMge0FycmF5fSBUaGUgY2h1bmtzXG5cdFx0ICovXG5cdFx0Y2h1bmtzKCkge1xuXHRcdFx0Ly8gSWYgdGhlIHJhbmdlcyBhcnJheSBpcyBlbXB0eSwgc2hvdyBvbmx5IG9uZSBjaHVuayB3aXRoIGFsbCB0ZXh0XG5cdFx0XHRpZiAodGhpcy5yYW5nZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHJldHVybiBbe1xuXHRcdFx0XHRcdHN0YXJ0OiAwLFxuXHRcdFx0XHRcdGVuZDogdGhpcy50ZXh0Lmxlbmd0aCxcblx0XHRcdFx0XHRoaWdobGlnaHQ6IGZhbHNlLFxuXHRcdFx0XHRcdHRleHQ6IHRoaXMudGV4dCxcblx0XHRcdFx0fV1cblx0XHRcdH1cblx0XHRcdC8vIENhbGN1bGF0ZSB0aGUgY2h1bmtzXG5cdFx0XHRjb25zdCBjaHVua3MgPSBbXVxuXHRcdFx0bGV0IGN1cnJlbnRJbmRleCA9IDBcblx0XHRcdGxldCBjdXJyZW50UmFuZ2UgPSAwXG5cdFx0XHQvLyBJdGVyYXRlIG92ZXIgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHRleHRcblx0XHRcdHdoaWxlIChjdXJyZW50SW5kZXggPCB0aGlzLnRleHQubGVuZ3RoKSB7XG5cdFx0XHRcdC8vIEdldCB0aGUgZmlyc3QgcmFuZ2UgdG8gaGlnaGxpZ2h0XG5cdFx0XHRcdGNvbnN0IHJhbmdlID0gdGhpcy5yYW5nZXNbY3VycmVudFJhbmdlXVxuXHRcdFx0XHQvLyBJZiB0aGUgcmFuZ2Ugc3RhcnRzIGF0IHRoZSBjdXJyZW50IGluZGV4LCBjb25zdHJ1Y3QgYSBjaHVuayB0byBoaWdobGlnaHQsXG5cdFx0XHRcdC8vIHNldCB0aGUgbmV4dCByYW5nZSBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBpdGVyYXRpb24uXG5cdFx0XHRcdGlmIChyYW5nZS5zdGFydCA9PT0gY3VycmVudEluZGV4KSB7XG5cdFx0XHRcdFx0Y2h1bmtzLnB1c2goe1xuXHRcdFx0XHRcdFx0Li4ucmFuZ2UsXG5cdFx0XHRcdFx0XHRoaWdobGlnaHQ6IHRydWUsXG5cdFx0XHRcdFx0XHR0ZXh0OiB0aGlzLnRleHQuc3Vic3RyKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQgLSByYW5nZS5zdGFydCksXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRjdXJyZW50UmFuZ2UrK1xuXHRcdFx0XHRcdGN1cnJlbnRJbmRleCA9IHJhbmdlLmVuZFxuXHRcdFx0XHRcdC8vIElmIHRoaXMgd2FzIHRoZSBsYXN0IHJhbmdlIHRvIGhpZ2hsaWdodCBhbmQgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHRleHQsXG5cdFx0XHRcdFx0Ly8gYWRkIHRoZSByZXN0IG9mIHRoZSB0ZXh0IHdpdGhvdXQgaGlnaGxpZ2h0aW5nLlxuXHRcdFx0XHRcdGlmIChjdXJyZW50UmFuZ2UgPj0gdGhpcy5yYW5nZXMubGVuZ3RoICYmIGN1cnJlbnRJbmRleCA8IHRoaXMudGV4dC5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNodW5rcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0c3RhcnQ6IGN1cnJlbnRJbmRleCxcblx0XHRcdFx0XHRcdFx0ZW5kOiB0aGlzLnRleHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRoaWdobGlnaHQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR0ZXh0OiB0aGlzLnRleHQuc3Vic3RyKGN1cnJlbnRJbmRleCwgdGhpcy50ZXh0Lmxlbmd0aCAtIGN1cnJlbnRJbmRleCksXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0Ly8gU2V0IHRoZSBjdXJyZW50IGluZGV4IHNvIHRoZSB3aGlsZSBsb29wIGVuZHMuXG5cdFx0XHRcdFx0XHRjdXJyZW50SW5kZXggPSB0aGlzLnRleHQubGVuZ3RoXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSWYgdGhlIGN1cnJlbnQgcmFuZ2UgZG9lcyBzdGFydCBhZnRlciB0aGUgY3VycmVudCBpbmRleCwgY29uc3RydWN0IGEgY2h1bmsgd2l0aG91dFxuXHRcdFx0XHQvLyBoaWdobGlnaHRpbmcgYW5kIHNldCB0aGUgY3VycmVudCBpbmRleCB0byB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgcmFuZ2UuXG5cdFx0XHRcdGNodW5rcy5wdXNoKHtcblx0XHRcdFx0XHRzdGFydDogY3VycmVudEluZGV4LFxuXHRcdFx0XHRcdGVuZDogcmFuZ2Uuc3RhcnQsXG5cdFx0XHRcdFx0aGlnaGxpZ2h0OiBmYWxzZSxcblx0XHRcdFx0XHR0ZXh0OiB0aGlzLnRleHQuc3Vic3RyKGN1cnJlbnRJbmRleCwgcmFuZ2Uuc3RhcnQgLSBjdXJyZW50SW5kZXgpLFxuXHRcdFx0XHR9KVxuXHRcdFx0XHRjdXJyZW50SW5kZXggPSByYW5nZS5zdGFydFxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNodW5rc1xuXHRcdH0sXG5cdH0sXG5cdC8qKlxuXHQgKiBUaGUgcmVuZGVyIGZ1bmN0aW9uIHRvIGRpc3BsYXkgdGhlIGNvbXBvbmVudFxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjcmVhdGVFbGVtZW50IFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgVk5vZGVzXG5cdCAqIEByZXR1cm5zIHtWTm9kZXN9IFRoZSBjcmVhdGVkIFZOb2Rlc1xuXHQgKi9cblx0cmVuZGVyKGNyZWF0ZUVsZW1lbnQpIHtcblx0XHRpZiAoIXRoaXMucmFuZ2VzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7fSwgdGhpcy50ZXh0KVxuXHRcdH1cblxuXHRcdHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywge30sIHRoaXMuY2h1bmtzLm1hcChjaHVuayA9PiB7XG5cdFx0XHRyZXR1cm4gY2h1bmsuaGlnaGxpZ2h0ID8gY3JlYXRlRWxlbWVudCgnc3Ryb25nJywge30sIGNodW5rLnRleHQpIDogY2h1bmsudGV4dFxuXHRcdH0pKVxuXHR9LFxufVxuPC9zY3JpcHQ+XG4iLCI8IS0tXG4gIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTggSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICAtXG4gIC0gQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gIC1cbiAgLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAgLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAgLSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gIC0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAgLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAgLVxuICAtIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gIC1cbiAgLS0+XG48ZG9jcz5cbiMjIFRoaXMgaXMgdXNlZCB0byBkaXNwbGF5IGEgYXZhdGFyLXRpdGxlL3N1YnRpdGxlICsgaWNvbiBsYXlvdXRcbkl0IG1pZ2h0IGJlIHVzZWQgZm9yIGxpc3QgcmVuZGVyaW5nIG9yIHdpdGhpbiB0aGUgbXVsdGlzZWxlY3QgZm9yIGV4YW1wbGVcblxuPiAqKk5vdGU6KiogQW55IGJpbmRpbmcgd2lsbCBiZSBmb3J3YXJkZWQgb24gdGhlIEF2YXRhciBjb21wb25lbnQgcm9vdFxuXG5gYGB2dWVcbjxMaXN0SXRlbUljb24gdGl0bGU9XCJVc2VyIDFcIiAvPlxuPExpc3RJdGVtSWNvbiB0aXRsZT1cIlVzZXIgMVwiIHN1YnRpdGxlPVwiSGlkZGVuIHN1YnRpdGxlIGJlY2F1c2Ugc2l6ZSBpcyB0b28gc21hbGxcIiA6YXZhdGFyLXNpemU9XCIyNFwiIC8+XG5gYGBcbmBgYHZ1ZVxuPExpc3RJdGVtSWNvbiB0aXRsZT1cIlVzZXIgMVwiIDphdmF0YXItc2l6ZT1cIjQ0XCIgaWNvbj1cImljb24tdXNlclwiIC8+XG5gYGBcblxuIyMjIFdpdGggaWNvblxuYGBgdnVlXG48TGlzdEl0ZW1JY29uIHRpdGxlPVwiR3JvdXAgMVwiIHN1YnRpdGxlPVwiMTMgbWVtYmVyc1wiIGljb249XCJpY29uLWdyb3VwXCIgOmlzLW5vLXVzZXI9XCJ0cnVlXCIgLz5cbmBgYFxuXG4jIyMgU2VhcmNoaW5nXG5gYGB2dWVcbjxMaXN0SXRlbUljb24gdGl0bGU9XCJUZXN0IHVzZXIgMVwiIHN1YnRpdGxlPVwiY2FsbG1ldGVzdEBkb21haW4uY29tXCIgc2VhcmNoPVwidGVzdFwiIC8+XG48TGlzdEl0ZW1JY29uIHRpdGxlPVwiVGVzdGluZyBhZG1pblwiIHN1YnRpdGxlPVwidGVzdG1lQGV4YW1wbGUuY29tXCIgc2VhcmNoPVwidGVzdFwiIC8+XG48TGlzdEl0ZW1JY29uIHRpdGxlPVwiVGVzdCBncm91cCAyXCIgc3VidGl0bGU9XCJsb3JlbWlwc3VtQGRvbWFpbi5jb21cIiBpY29uPVwiaWNvbi1ncm91cFwiIDppcy1uby11c2VyPVwidHJ1ZVwiIHNlYXJjaD1cInRlc3RcIiAvPlxuYGBgXG5cbiMjIyBXaXRoIGFjdGlvbnNcbmBgYHZ1ZVxuPExpc3RJdGVtSWNvbiB0aXRsZT1cIlRlc3QgdXNlciAxXCIgc3VidGl0bGU9XCJjYWxsbWV0ZXN0QGRvbWFpbi5jb21cIj5cblx0PEFjdGlvbnM+XG5cdFx0PEFjdGlvbkJ1dHRvbiBpY29uPVwiaWNvbi1lZGl0XCIgQGNsaWNrPVwiYWxlcnQoJ0VkaXQnKVwiPkVkaXQ8L0FjdGlvbkJ1dHRvbj5cblx0XHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWRlbGV0ZVwiIEBjbGljaz1cImFsZXJ0KCdEZWxldGUnKVwiPkRlbGV0ZTwvQWN0aW9uQnV0dG9uPlxuXHQ8L0FjdGlvbnM+XG48L0xpc3RJdGVtSWNvbj5cbmBgYFxuPC9kb2NzPlxuXG48dGVtcGxhdGU+XG5cdDxzcGFuIDppZD1cImlkXCJcblx0XHRjbGFzcz1cIm9wdGlvblwiXG5cdFx0OnN0eWxlPVwiY3NzVmFyc1wiXG5cdFx0di1vbj1cIiRsaXN0ZW5lcnNcIj5cblx0XHQ8QXZhdGFyXG5cdFx0XHR2LWJpbmQ9XCIkYXR0cnNcIlxuXHRcdFx0OmRpc2FibGUtbWVudT1cInRydWVcIlxuXHRcdFx0OmRpc2FibGUtdG9vbHRpcD1cInRydWVcIlxuXHRcdFx0OmRpc3BsYXktbmFtZT1cImRpc3BsYXlOYW1lIHx8IHRpdGxlXCJcblx0XHRcdDppcy1uby11c2VyPVwiaXNOb1VzZXJcIlxuXHRcdFx0OnNpemU9XCJhdmF0YXJTaXplXCJcblx0XHRcdGNsYXNzPVwib3B0aW9uX19hdmF0YXJcIiAvPlxuXHRcdDxkaXYgY2xhc3M9XCJvcHRpb25fX2RldGFpbHNcIj5cblx0XHRcdDxIaWdobGlnaHRcblx0XHRcdFx0Y2xhc3M9XCJvcHRpb25fX2xpbmVvbmVcIlxuXHRcdFx0XHQ6dGV4dD1cInRpdGxlXCJcblx0XHRcdFx0OnNlYXJjaD1cInNlYXJjaFwiIC8+XG5cdFx0XHQ8SGlnaGxpZ2h0XG5cdFx0XHRcdHYtaWY9XCJpc1ZhbGlkU3VidGl0bGUgJiYgaXNTaXplQmlnRW5vdWdoXCJcblx0XHRcdFx0Y2xhc3M9XCJvcHRpb25fX2xpbmV0d29cIlxuXHRcdFx0XHQ6dGV4dD1cInN1YnRpdGxlXCJcblx0XHRcdFx0OnNlYXJjaD1cInNlYXJjaFwiIC8+XG5cdFx0XHQ8c3BhbiB2LWVsc2UtaWY9XCJoYXNTdGF0dXNcIj5cblx0XHRcdFx0PHNwYW4+e3sgdXNlclN0YXR1cy5pY29uIH19PC9zcGFuPlxuXHRcdFx0XHQ8c3Bhbj57eyB1c2VyU3RhdHVzLm1lc3NhZ2UgfX08L3NwYW4+XG5cdFx0XHQ8L3NwYW4+XG5cdFx0PC9kaXY+XG5cblx0XHQ8IS0tIEBzbG90IHVzZSB0aGlzIHNsb3QgdG8gYWRkIGEgY3VzdG9tIGljb24gb3IgYWN0aW9ucyAtLT5cblx0XHQ8c2xvdCAvPlxuXHRcdDxzcGFuIHYtaWY9XCJoYXNJY29uICYmICFoYXNTbG90XCIgY2xhc3M9XCJpY29uIG9wdGlvbl9faWNvblwiIDpjbGFzcz1cImljb25cIiAvPlxuXHQ8L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IEF2YXRhciBmcm9tICcuLi9BdmF0YXInXG5pbXBvcnQgSGlnaGxpZ2h0IGZyb20gJy4uL0hpZ2hsaWdodCdcbmltcG9ydCB7IHVzZXJTdGF0dXMgfSBmcm9tICcuLi8uLi9taXhpbnMnXG5cbi8vIGdsb2JhbCBtYXJnaW4sIF4yIHJhdGlvXG5jb25zdCBtYXJnaW4gPSA4XG5jb25zdCBkZWZhdWx0U2l6ZSA9IDMyXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0bmFtZTogJ0xpc3RJdGVtSWNvbicsXG5cblx0Y29tcG9uZW50czoge1xuXHRcdEF2YXRhcixcblx0XHRIaWdobGlnaHQsXG5cdH0sXG5cdG1peGluczogW3VzZXJTdGF0dXNdLFxuXG5cdHByb3BzOiB7XG5cdFx0LyoqXG5cdFx0ICogRGVmYXVsdCBmaXJzdCBsaW5lIHRleHRcblx0XHQgKi9cblx0XHR0aXRsZToge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNlY29uZGFyeSBvcHRpb25hbCBsaW5lXG5cdFx0ICogT25seSB2aXNpYmxlIG9uIHNpemUgb2YgMzIgYW5kIGFib3ZlXG5cdFx0ICovXG5cdFx0c3VidGl0bGU6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6ICcnLFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBJY29uIGNsYXNzIHRvIGJlIGRpc3BsYXllZCBhdCB0aGUgZW5kIG9mIHRoZSBjb21wb25lbnRcblx0XHQgKi9cblx0XHRpY29uOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2VhcmNoIHdpdGhpbiB0aGUgaGlnaGxpZ2h0IG9mIHRpdGxlL3N1YnRpdGxlXG5cdFx0ICovXG5cdFx0c2VhcmNoOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IGEgc2l6ZSBpbiBweCB0aGF0IHdpbGwgZGVmaW5lIHRoZSBhdmF0YXIgaGVpZ2h0L3dpZHRoXG5cdFx0ICogYW5kIHRoZXJlZm9yZSwgdGhlIGhlaWdodCBvZiB0aGUgY29tcG9uZW50XG5cdFx0ICovXG5cdFx0YXZhdGFyU2l6ZToge1xuXHRcdFx0dHlwZTogTnVtYmVyLFxuXHRcdFx0ZGVmYXVsdDogZGVmYXVsdFNpemUsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIERpc2FibGUgdGhlIG1hcmdpbnMgb2YgdGhpcyBjb21wb25lbnQuXG5cdFx0ICogVXNlZnVsIGZvciBpbnRlZ3JhdGlvbiBpbiBNdWx0aXNlbGVjdCBmb3IgZXhhbXBsZVxuXHRcdCAqL1xuXHRcdG5vTWFyZ2luOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNlZSB0aGUgW0F2YXRhcl0oI0F2YXRhcikgZGlzcGxheU5hbWUgcHJvcFxuXHRcdCAqIEZhbGxiYWNrIHRvIHRpdGxlXG5cdFx0ICovXG5cdFx0ZGlzcGxheU5hbWU6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZWUgdGhlIFtBdmF0YXJdKCNBdmF0YXIpIGlzTm9Vc2VyIHByb3Bcblx0XHQgKiBFbmFibGUvZGlzYWJsZSB0aGUgVXNlclN0YXR1cyBmZXRjaGluZ1xuXHRcdCAqL1xuXHRcdGlzTm9Vc2VyOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFVuaXF1ZSBsaXN0IGl0ZW0gSURcblx0XHQgKi9cblx0XHRpZDoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHR9LFxuXHR9LFxuXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG1hcmdpbixcblx0XHR9XG5cdH0sXG5cblx0Y29tcHV0ZWQ6IHtcblx0XHRoYXNJY29uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbiAhPT0gJydcblx0XHR9LFxuXHRcdGhhc1Nsb3QoKSB7XG5cdFx0XHRyZXR1cm4gISF0aGlzLiRzbG90cy5kZWZhdWx0XG5cdFx0fSxcblxuXHRcdGlzVmFsaWRTdWJ0aXRsZSgpIHtcblx0XHRcdHJldHVybiB0aGlzLnN1YnRpdGxlPy50cmltPy4oKSAhPT0gJydcblx0XHR9LFxuXHRcdGlzU2l6ZUJpZ0Vub3VnaCgpIHtcblx0XHRcdHJldHVybiB0aGlzLmF2YXRhclNpemUgPj0gZGVmYXVsdFNpemVcblx0XHR9LFxuXG5cdFx0Y3NzVmFycygpIHtcblx0XHRcdC8vIERvbid0IHVzZSBtYXJnaW4gdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQgaWYgbm9NYXJnaW5cblx0XHRcdGNvbnN0IG1hcmdpbiA9IHRoaXMubm9NYXJnaW4gPyAwIDogdGhpcy5tYXJnaW5cblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Jy0taGVpZ2h0JzogdGhpcy5hdmF0YXJTaXplICsgMiAqIG1hcmdpbiArICdweCcsXG5cdFx0XHRcdCctLW1hcmdpbic6IHRoaXMubWFyZ2luICsgJ3B4Jyxcblx0XHRcdH1cblx0XHR9LFxuXHR9LFxuXG5cdGJlZm9yZU1vdW50KCkge1xuXHRcdC8vIElmIHdlIGRvbid0IGhhdmUgYSBzdWJ0aXRsZSBhbmQgaWYgdGhpcyBpcyBhIHVzZXJcblx0XHRpZiAoIXRoaXMuaXNOb1VzZXIgJiYgIXRoaXMuc3VidGl0bGUpIHtcblx0XHRcdHRoaXMuZmV0Y2hVc2VyU3RhdHVzKHRoaXMudXNlcilcblx0XHR9XG5cdH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuLm9wdGlvbiB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IHZhcigtLWhlaWdodCk7XG5cblx0Jl9fYXZhdGFyIHtcblx0XHRtYXJnaW4tcmlnaHQ6IHZhcigtLW1hcmdpbik7XG5cdH1cblxuXHQmX19kZXRhaWxzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXg6IDEgMTtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdCZfX2xpbmVvbmUge1xuXHRcdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWxpZ2h0KTtcblx0fVxuXHQmX19saW5ldHdvIHtcblx0XHRvcGFjaXR5OiAkb3BhY2l0eV9ub3JtYWw7XG5cdH1cblx0Jl9fbGluZW9uZSxcblx0Jl9fbGluZXR3byB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjFlbTtcblx0XHRzdHJvbmcge1xuXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0Jl9faWNvbiB7XG5cdFx0ZmxleDogMCAwICRjbGlja2FibGUtYXJlYTtcblx0XHR3aWR0aDogJGNsaWNrYWJsZS1hcmVhO1xuXHRcdGhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xuXHRcdG9wYWNpdHk6ICRvcGFjaXR5X2Rpc2FibGVkO1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDE2cHg7XG5cdH1cbn1cblxuPC9zdHlsZT5cbiIsIjwhLS1cbiAgLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gIC1cbiAgLSBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAgLVxuICAtIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAgLSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAtIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICAtIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICAtXG4gIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gIC0gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAgLVxuICAtLT5cblxuPHRlbXBsYXRlPlxuXHQ8ZGl2IGNsYXNzPVwibmFtZS1wYXJ0c1wiIDp0aXRsZT1cIm5hbWVcIj5cblx0XHQ8SGlnaGxpZ2h0XG5cdFx0XHRjbGFzcz1cIm5hbWUtcGFydHNfX2ZpcnN0XCJcblx0XHRcdDp0ZXh0PVwicGFydDFcIlxuXHRcdFx0OnNlYXJjaD1cInNlYXJjaFwiXG5cdFx0XHQ6aGlnaGxpZ2h0PVwiaGlnaGxpZ2h0MVwiIC8+XG5cdFx0PEhpZ2hsaWdodFxuXHRcdFx0di1pZj1cInBhcnQyXCJcblx0XHRcdGNsYXNzPVwibmFtZS1wYXJ0c19fbGFzdFwiXG5cdFx0XHQ6dGV4dD1cInBhcnQyXCJcblx0XHRcdDpzZWFyY2g9XCJzZWFyY2hcIlxuXHRcdFx0OmhpZ2hsaWdodD1cImhpZ2hsaWdodDJcIiAvPlxuXHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IEhpZ2hsaWdodCBmcm9tICcuLi9IaWdobGlnaHQnXG5pbXBvcnQgRmluZFJhbmdlcyBmcm9tICcuLi8uLi91dGlscy9GaW5kUmFuZ2VzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICdFbGxpcHNpc2VkT3B0aW9uJyxcblxuXHRjb21wb25lbnRzOiB7XG5cdFx0SGlnaGxpZ2h0LFxuXHR9LFxuXG5cdHByb3BzOiB7XG5cdFx0b3B0aW9uOiB7XG5cdFx0XHR0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuXHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXHRcdGxhYmVsOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXHRcdHNlYXJjaDoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJycsXG5cdFx0fSxcblx0XHRuYW1lOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXHR9LFxuXG5cdGNvbXB1dGVkOiB7XG5cdFx0bmVlZHNUcnVuY2F0ZSgpIHtcblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgdGhpcy5uYW1lLmxlbmd0aCA+PSAxMFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogSW5kZXggYXQgd2hpY2ggdG8gc3BsaXQgdGhlIG5hbWUgaWYgaXQgaXMgbG9uZ2VyIHRoYW4gMTAgY2hhcmFjdGVycy5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtJbnRlZ2VyfSBUaGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gc3BsaXRcblx0XHQgKi9cblx0XHRzcGxpdCgpIHtcblx0XHRcdC8vIGxlYXZlIG1heGltdW0gMTAgbGV0dGVyc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZS5sZW5ndGggLSBNYXRoLm1pbihNYXRoLmZsb29yKHRoaXMubmFtZS5sZW5ndGggLyAyKSwgMTApXG5cdFx0fSxcblx0XHRwYXJ0MSgpIHtcblx0XHRcdGlmICh0aGlzLm5lZWRzVHJ1bmNhdGUpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMubmFtZS5zdWJzdHIoMCwgdGhpcy5zcGxpdClcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLm5hbWVcblx0XHR9LFxuXHRcdHBhcnQyKCkge1xuXHRcdFx0aWYgKHRoaXMubmVlZHNUcnVuY2F0ZSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5uYW1lLnN1YnN0cih0aGlzLnNwbGl0KVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICcnXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBUaGUgcmFuZ2VzIHRvIGhpZ2hsaWdodC4gU2luY2Ugd2Ugc3BsaXQgdGhlIHN0cmluZyBmb3IgZWxsaXBzaXNpbmcsXG5cdFx0ICogdGhlIEhpZ2hsaWdodCBjb21wb25lbnQgY2Fubm90IGZpZ3VyZSB0aGlzIG91dCBpdHNlbGYgYW5kIG5lZWRzIHRoZSByYW5nZXMgcHJvdmlkZWQuXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBhcnJheSB3aXRoIHRoZSByYW5nZXMgdG8gaGlnaGxpZ2h0XG5cdFx0ICovXG5cdFx0aGlnaGxpZ2h0MSgpIHtcblx0XHRcdGlmICghdGhpcy5zZWFyY2gpIHtcblx0XHRcdFx0cmV0dXJuIFtdXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gRmluZFJhbmdlcyh0aGlzLm5hbWUsIHRoaXMuc2VhcmNoKVxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogV2Ugc2hpZnQgdGhlIHJhbmdlcyBmb3IgdGhlIHNlY29uZCBwYXJ0IGJ5IHRoZSBwb3NpdGlvbiBvZiB0aGUgc3BsaXQuXG5cdFx0ICogUmFuZ2VzIG91dCBvZiB0aGUgc3RyaW5nIGxlbmd0aCBhcmUgZGlzY2FyZGVkIGJ5IHRoZSBIaWdobGlnaHQgY29tcG9uZW50LFxuXHRcdCAqIHNvIHdlIGRvbid0IG5lZWQgdG8gdGFrZSBjYXJlIG9mIHRoaXMgaGVyZS5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtBcnJheX0gVGhlIGFycmF5IHdpdGggdGhlIHJhbmdlcyB0byBoaWdobGlnaHRcblx0XHQgKi9cblx0XHRoaWdobGlnaHQyKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaGlnaGxpZ2h0MS5tYXAocmFuZ2UgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHN0YXJ0OiByYW5nZS5zdGFydCAtIHRoaXMuc3BsaXQsXG5cdFx0XHRcdFx0ZW5kOiByYW5nZS5lbmQgLSB0aGlzLnNwbGl0LFxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbi5uYW1lLXBhcnRzIHtcblx0ZGlzcGxheTogZmxleDtcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHQmX19maXJzdCB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0fVxuXHQmX19maXJzdCxcblx0Jl9fbGFzdCB7XG5cdFx0Ly8gcHJldmVudCB3aGl0ZXNwYWNlIGZyb20gYmVpbmcgdHJpbW1lZFxuXHRcdHdoaXRlLXNwYWNlOiBwcmU7XG5cdFx0c3Ryb25nIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdH1cblx0fVxufVxuPC9zdHlsZT5cbiIsIjwhLS1cbiAgLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gIC1cbiAgLSBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAgLVxuICAtIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAgLSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAtIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICAtIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICAtXG4gIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gIC0gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAgLVxuICAtLT5cbjxkb2NzPlxuIyMgTXVsdGlzZWxlY3RcbldlJ3JlIHdyYXBwaW5nIHRoZSBhd2Vzb21lIHZ1ZS1tdWx0aXNlbGVjdCBsaWJyYXJ5IHRvIGFkZCBvdXIgb3duIHN0eWxpbmcgYW5kIGRlZmF1bHQgcHJvcHMvbWV0aG9kc1xuWW91IGNhbiB1c2UgYWxsIHRoZSBwcm9wZXJ0aWVzIGZyb20gaHR0cHM6Ly92dWUtbXVsdGlzZWxlY3QuanMub3JnIHRoYXQgYXJlIG5vdCBkZWNsYXJlZC9vdmVycmlkZWQgaGVyZS5cblxuIyMjIFNpbXBsZSBleGFtcGxlc1xuYGBgdnVlXG48dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG5cdFx0PE11bHRpc2VsZWN0IHYtbW9kZWw9XCJ2YWx1ZTFcIiA6b3B0aW9ucz1cIm9wdGlvbnNcIiAvPlxuXHRcdDxNdWx0aXNlbGVjdCB2LW1vZGVsPVwidmFsdWUyXCIgOm9wdGlvbnM9XCJvcHRpb25zXCIgOm11bHRpcGxlPVwidHJ1ZVwiIC8+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICcuLi9pbmRleCdcbmV4cG9ydCBkZWZhdWx0IHtcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4geyB2YWx1ZTE6ICcyJywgdmFsdWUyOiBbJzInXSwgb3B0aW9uczogWycwJywgJzEnLCAnMicsICczJywgJzQnXSB9XG5cdH1cbn1cbjwvc2NyaXB0PlxuYGBgXG5cbiMjIyBTaW1wbGUgZXhhbXBsZSB3aXRoIG9iamVjdHNcbllvdSBjYW4gZWl0aGVyIHVzZSB0aGUgZXhhY3Qgb2JqZWN0IG9yIHRoZSB0cmFjay1ieSBrZXkgdG8gbWF0Y2ggYWdhaW5zdCB5b3VyIG9wdGlvbnNcblxuYGBgdnVlXG48dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG5cdFx0PE11bHRpc2VsZWN0IHYtbW9kZWw9XCJ2YWx1ZTFcIiA6b3B0aW9ucz1cIm9wdGlvbnNcIiB0cmFjay1ieT1cImlkXCIgbGFiZWw9XCJsYWJlbFwiIC8+XG5cdFx0PHByZT5TZWxlY3RlZCBvcHRpb246IHt7IHZhbHVlMSB9fTwvcHJlPlxuXHRcdDxiciAvPlxuXHRcdDxNdWx0aXNlbGVjdCB2LW1vZGVsPVwidmFsdWUyXCIgOm9wdGlvbnM9XCJvcHRpb25zXCIgdHJhY2stYnk9XCJpZFwiIGxhYmVsPVwibGFiZWxcIiAvPlxuXHRcdDxwcmU+U2VsZWN0ZWQgb3B0aW9uOiB7eyB2YWx1ZTIgfX08L3ByZT5cblx0PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJy4uL2luZGV4J1xuY29uc3Qgb3B0aW9ucyA9IFtcblx0eyBpZDogMSwgbGFiZWw6ICdPcHRpb24gMScgfSxcblx0eyBpZDogMiwgbGFiZWw6ICdPcHRpb24gMicgfSxcblx0eyBpZDogMywgbGFiZWw6ICdPcHRpb24gMycgfSxcblx0eyBpZDogNCwgbGFiZWw6ICdPcHRpb24gNCcgfVxuXVxuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR2YWx1ZTE6IG9wdGlvbnNbMV0sXG5cdFx0XHR2YWx1ZTI6IDIsXG5cdFx0XHRvcHRpb25zXG5cdFx0fVxuXHR9XG59XG48L3NjcmlwdD5cbmBgYFxuXG4jIyMgTGltaXQgd2l0aCBhdXRvbWF0ZWQgdG9vbHRpcFxuYGBgdnVlXG48dGVtcGxhdGU+XG5cdDxNdWx0aXNlbGVjdCB2LW1vZGVsPVwidmFsdWVcIlxuXHRcdDpvcHRpb25zPVwib3B0aW9uc1wiIDptdWx0aXBsZT1cInRydWVcIlxuXHRcdDp0YWctd2lkdGg9XCI4MFwiIC8+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJy4uL2luZGV4J1xuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR2YWx1ZTogWydlaXJtb2QnLCAnZXQnLCAnbWFnbmEnLCAnaW52aWR1bnQnLCAndGVtcG9yJ10sXG5cdFx0XHRvcHRpb25zOiBbJ0NvbnNldGV0dXInLCAnc2FkaXBzY2luZycsICdlbGl0cicsICdzZWQnLFxuXHRcdFx0XHQnZGlhbScsICdub251bXknLCAnZWlybW9kJywgJ3RlbXBvcicsICdpbnZpZHVudCcsXG5cdFx0XHRcdCd1dCcsICdsYWJvcmUnLCAnZXQnLCAnZG9sb3JlJywgJ21hZ25hJywgJ2FsaXF1eWFtJywgJ2VyYXQnXVxuXHRcdH1cblx0fVxufVxuPC9zY3JpcHQ+XG5gYGBcblxuIyMjIFVzZXIgbGF5b3V0XG5CeSBzcGVjaWZ5aW5nIGA6dXNlci1zZWxlY3Q9XCJ0cnVlXCJgLCB5b3UgY2FuIGJlbmVmaXQgZnJvbSBhIGZ1bGx5IGZvcm1hdHRlZCBsYXlvdXQuXG5UaGUgc2luZ2xlTGFiZWwgc2xvdCBoZXJlIGlzIG9wdGlvbmFsIG9mIGNvdXJzZSBhbmQgaGVyZSBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlc1xuVGhlIExpc3RJdGVtSWNvbiB0aXRsZSB3aWxsIGJlIHByb3ZpZGVkIGJ5IHRoZSBvcHRpb24ga2V5IHJlZmVyaW5nIHRvIHRoZSBgbGFiZWxgIHByb3AuXG5FeGFtcGxlIGhlcmU6IGBkaXNwbGF5TmFtZWBcblxuPiAqKk5vdGU6KiogQW55IGV4dHJhIGJpbmRpbmcgZnJvbSB0aGUgb2JqZWN0IHdpbGwgYmUgYWRkZWQgYXMgYXR0cmlidXRlIChgJGF0dHJzYCkgb24gdGhlIExpc3RJdGVtSWNvbiBjb21wb25lbnQgdXNlZCBoZXJlXG5cbmBgYHZ1ZVxuPHRlbXBsYXRlPlxuXHQ8TXVsdGlzZWxlY3Qgdi1tb2RlbD1cInZhbHVlXCIgOm9wdGlvbnM9XCJmb3JtYXR0ZWRPcHRpb25zXCJcblx0XHRsYWJlbD1cImRpc3BsYXlOYW1lXCIgdHJhY2stYnk9XCJ1c2VyXCJcblx0XHQ6dXNlci1zZWxlY3Q9XCJ0cnVlXCJcblx0XHRzdHlsZT1cIndpZHRoOiAyNTBweFwiPlxuXHRcdDx0ZW1wbGF0ZSAjc2luZ2xlTGFiZWw9XCJ7IG9wdGlvbiB9XCI+XG5cdFx0XHQ8TGlzdEl0ZW1JY29uIHYtYmluZD1cIm9wdGlvblwiIDp0aXRsZT1cIm9wdGlvbi5kaXNwbGF5TmFtZVwiIDphdmF0YXItc2l6ZT1cIjI0XCIgOm5vLW1hcmdpbj1cInRydWVcIiAvPlxuXHRcdDwvdGVtcGxhdGU+XG5cdDwvTXVsdGlzZWxlY3Q+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJy4uL2luZGV4J1xuXG4vLyBCdWlsZGluZyBmYWtlIGRhdGEgZm9yIHRoZSBkb2NzXG5jb25zdCBvcHRpb25zID0gWydhZG1pbicsICd1c2VyMScsICd1c2VyMicsICdndWVzdCcsICdncm91cDEnXVxuY29uc3QgZm9ybWF0dGVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKGl0ZW0gPT4ge1xuXHRyZXR1cm4ge1xuXHRcdHVzZXI6IGl0ZW0sXG5cdFx0ZGlzcGxheU5hbWU6IGl0ZW0sXG5cdFx0c3VidGl0bGU6IGBUaGlzIGlzIHRoZSAke2l0ZW0uc3RhcnRzV2l0aCgnZ3JvdXAnKSA/ICdncm91cCcgOiAndXNlcid9ICR7aXRlbX1gLFxuXHRcdGljb246IGl0ZW0uc3RhcnRzV2l0aCgnZ3JvdXAnKSA/ICdpY29uLWdyb3VwJyA6ICdpY29uLXVzZXInLFxuXHRcdGlzTm9Vc2VyOiBpdGVtLnN0YXJ0c1dpdGgoJ2dyb3VwJylcblx0fVxufSlcbmV4cG9ydCBkZWZhdWx0IHtcblx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0dmFsdWU6IGZvcm1hdHRlZE9wdGlvbnNbMF0sXG5cdFx0XHRcdFx0Zm9ybWF0dGVkT3B0aW9ucyxcblx0XHRcdH1cblx0fSxcbn1cbjwvc2NyaXB0PlxuYGBgXG48L2RvY3M+XG5cbjx0ZW1wbGF0ZT5cblx0PCEtLVxuXHQjIFRoaXMgaXMgdGhlIG9yaWdpbmFsIE11bHRpc2VsZWN0ICFcblx0IyMgdGFnLXBsYWNlaG9sZGVyPVwiY3JlYXRlXCJcblx0LT4gSGFjayB0byBhbGxvdyB1cyB0byBkZXRlY3Qgd2hlbiBhbiBvcHRpb24gbmVlZHNcblx0LSAgdG8gYmUgY3JlYXRlZCAod2l0aCBjc3MpIGFuZCBhcHBseSB0aGUgcHJvcGVyXG5cdC0gIHN0eWxpbmcgdG8gdGhpcyBlbnRyeSwgQHNlZSBbZGF0YS1zZWxlY3Q9J2NyZWF0ZSddXG5cdCMjIDpjbG9zZS1vbi1zZWxlY3Q9XCIhbXVsdGlwbGVcIlxuXHQtPiBJZiBtdWx0aXBsZSBjaG9pY2UgYWxsb3dlZCwgbGVhdmUgdGhlIGRyb3Bkb3duXG5cdC0gIG9wZW4gYWZ0ZXIgc2VsZWN0XG5cdCMjIHYtb249XCIkbGlzdGVuZXJzXCIsIHYtYmluZD1cIiRhdHRyc1wiXG5cdC0+IEZvcndhcmQgYWxsIHVuZGVjbGFyZWQgcHJvcHMgdG8gdGhlIHZ1ZS1tdWx0aXNlbGVjdCBjaGlsZFxuXHQtLT5cblx0PFZ1ZU11bHRpc2VsZWN0XG5cdFx0cmVmPVwiVnVlTXVsdGlzZWxlY3RcIlxuXHRcdHYtbW9kZWw9XCJsb2NhbFZhbHVlXCJcblx0XHR2LWJpbmQ9XCIkYXR0cnNcIlxuXHRcdDpjbGFzcz1cIltcblx0XHRcdHtcblx0XHRcdFx0J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmdcblx0XHRcdH0sXG5cdFx0XHRtdWx0aXBsZSA/ICdtdWx0aXNlbGVjdC0tbXVsdGlwbGUnOiAnbXVsdGlzZWxlY3QtLXNpbmdsZSdcblx0XHRdXCJcblx0XHQ6b3B0aW9ucz1cIm9wdGlvbnNcIlxuXHRcdDpsaW1pdD1cIm1heE9wdGlvbnNcIlxuXHRcdDpjbG9zZS1vbi1zZWxlY3Q9XCIhbXVsdGlwbGVcIlxuXHRcdDptdWx0aXBsZT1cIm11bHRpcGxlXCJcblx0XHQ6bGFiZWw9XCJsYWJlbFwiXG5cdFx0OnRyYWNrLWJ5PVwidHJhY2tCeVwiXG5cdFx0dGFnLXBsYWNlaG9sZGVyPVwiY3JlYXRlXCJcblx0XHR2LW9uPVwiJGxpc3RlbmVyc1wiPlxuXHRcdDwhLS0gVGhpcyBpcyB0aGUgc2NvcGUgdG8gZm9ybWF0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zIGluIHRoZSBkcm9wZG93blxuXHRcdFx0VHdvIHRlbXBsYXRlcyB0byBhdm9pZCByZWdpc3RlcmluZyB0aGUgc2xvdCB1bm5lY2Vzc2FyeSAtLT5cblx0XHQ8dGVtcGxhdGUgI29wdGlvbj1cInNjb3BlXCI+XG5cdFx0XHQ8IS0tIEF2YXRhciBkaXNwbGF5IHNlbGVjdCBzbG90IG92ZXJyaWRlLlxuXHRcdFx0XHRZb3UgQ0FOTk9UIHVzZSB0aGlzIHNjb3BlLCB3ZSB3aWxsIHJlcGxhY2UgaXQgYnkgdGhpcyAtLT5cblx0XHRcdDxMaXN0SXRlbUljb24gdi1pZj1cInVzZXJTZWxlY3QgJiYgISRzY29wZWRTbG90c1snb3B0aW9uJ11cIlxuXHRcdFx0XHR2LWJpbmQ9XCJzY29wZS5vcHRpb25cIlxuXHRcdFx0XHQ6dGl0bGU9XCJzY29wZS5vcHRpb25bbGFiZWxdXCJcblx0XHRcdFx0OnNlYXJjaD1cInNjb3BlLnNlYXJjaFwiIC8+XG5cblx0XHRcdDwhLS0gRWxsaXBzaXMgaW4gdGhlIG1pZGRsZSBpZiBubyBvcHRpb24gc2xvdFxuXHRcdFx0XHRpcyBkZWZpbmVkIGluIHRoZSBwYXJlbnQgLS0+XG5cdFx0XHQ8RWxsaXBzaXNlZE9wdGlvbiB2LWVsc2UtaWY9XCIhJHNjb3BlZFNsb3RzWydvcHRpb24nXVwiXG5cdFx0XHRcdDpuYW1lPVwiZ2V0T3B0aW9uTGFiZWwoc2NvcGUub3B0aW9uKVwiXG5cdFx0XHRcdDpvcHRpb249XCJzY29wZS5vcHRpb25cIlxuXHRcdFx0XHQ6c2VhcmNoPVwic2NvcGUuc2VhcmNoXCJcblx0XHRcdFx0OmxhYmVsPVwibGFiZWxcIiAvPlxuXG5cdFx0XHQ8IS0tIFBhc3NpbmcgdGhlIHNpbmdsZUxhYmVsIHNsb3QgLS0+XG5cdFx0XHQ8c2xvdCB2LWVsc2UgbmFtZT1cIm9wdGlvblwiIHYtYmluZD1cInNjb3BlXCIgLz5cblx0XHQ8L3RlbXBsYXRlPlxuXG5cdFx0PCEtLSBSZWdpc3RlcmluZyB0aGUgbGltaXQgc2xvdCB0byBnZXQgdGhlICt4eHggdG9vbHRpcC5cblx0XHRcdFlvdSBDQU5OT1QgdXNlIHRoaXMgc2NvcGUsIHdlIHdpbGwgcmVwbGFjZSBpdCBieSB0aGlzIC0tPlxuXHRcdDx0ZW1wbGF0ZSB2LWlmPVwibXVsdGlwbGVcIiAjbGltaXQ+XG5cdFx0XHQ8c3BhbiB2LXRvb2x0aXAuYXV0bz1cImZvcm1hdExpbWl0VGl0bGUodmFsdWUpXCJcblx0XHRcdFx0Y2xhc3M9XCJtdWx0aXNlbGVjdF9fbGltaXRcIj5cblx0XHRcdFx0e3sgbGltaXRTdHJpbmcgfX1cblx0XHRcdDwvc3Bhbj5cblx0XHQ8L3RlbXBsYXRlPlxuXG5cdFx0PCEtLSBQYXNzaW5nIHRoZSBzaW5nbGVMYWJlbCBzbG90LCB0aGlzIGlzIHVzZWQgdG8gZm9ybWF0IHRoZSBzZWxlY3RlZFxuXHRcdFx0b3B0aW9uIG9uIE5PTi1tdWx0aXBsZSBtdWx0aXNlbGVjdHMgLS0+XG5cdFx0PHRlbXBsYXRlIHYtZm9yPVwiKF8sIHNsb3QpIG9mICRzY29wZWRTbG90c1wiICNbc2xvdF09XCJzY29wZVwiPlxuXHRcdFx0PHNsb3QgOm5hbWU9XCJzbG90XCIgdi1iaW5kPVwic2NvcGVcIiAvPlxuXHRcdDwvdGVtcGxhdGU+XG5cblx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57eyB0KCdObyByZXN1bHRzJykgfX08L3NwYW4+XG5cdDwvVnVlTXVsdGlzZWxlY3Q+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IFZ1ZU11bHRpc2VsZWN0IGZyb20gJ3Z1ZS1tdWx0aXNlbGVjdCdcblxuaW1wb3J0IEVsbGlwc2lzZWRPcHRpb24gZnJvbSAnLi9FbGxpcHNpc2VkT3B0aW9uJ1xuaW1wb3J0IGwxMG4gZnJvbSAnLi4vLi4vbWl4aW5zL2wxMG4nXG5pbXBvcnQgTGlzdEl0ZW1JY29uIGZyb20gJy4uL0xpc3RJdGVtSWNvbidcbmltcG9ydCBUb29sdGlwIGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvVG9vbHRpcCdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnTXVsdGlzZWxlY3QnLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0RWxsaXBzaXNlZE9wdGlvbixcblx0XHRMaXN0SXRlbUljb24sXG5cdFx0VnVlTXVsdGlzZWxlY3QsXG5cdH0sXG5cdGRpcmVjdGl2ZXM6IHtcblx0XHR0b29sdGlwOiBUb29sdGlwLFxuXHR9LFxuXHRtaXhpbnM6IFtsMTBuXSxcblx0aW5oZXJpdEF0dHJzOiBmYWxzZSxcblxuXHQvKipcblx0ICogRXZlcnkgcHJvcCB0aGF0IGlzIGRlZmluZWQgaGVyZSB3aWxsIGJyZWFrIHRoZSBhdXRvXG5cdCAqIGZvcndhcmQgdG8gdGhlIHZ1ZS1tdWx0aXNlbGVjdCBjb21wb25lbnRcblx0ICogWW91IHdpbGwgaGF2ZSB0byBzcGVjaWZ5IGl0IGFzIGEgcHJvcCBvbiB0aGUgdGVtcGxhdGVcblx0ICovXG5cdHByb3BzOiB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cdFx0dmFsdWU6IHtcblx0XHRcdGRlZmF1bHQoKSB7XG5cdFx0XHRcdHJldHVybiBbXVxuXHRcdFx0fSxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQWxsb3cgbXVsdGlwbGUgc2VsZWN0ID9cblx0XHQgKi9cblx0XHRtdWx0aXBsZToge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHJlc3VsdHNcblx0XHQgKi9cblx0XHRsaW1pdDoge1xuXHRcdFx0dHlwZTogTnVtYmVyLFxuXHRcdFx0ZGVmYXVsdDogOTk5OTksXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIGtleSB0byB1c2UgYXMgbGFiZWwgb24gb2JqZWN0IG9wdGlvbnNcblx0XHQgKi9cblx0XHRsYWJlbDoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJycsXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBrZXkgdG8gdXNlIGFzIGlkIG9uIG9iamVjdCBvcHRpb25zXG5cdFx0ICovXG5cdFx0dHJhY2tCeToge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJycsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFycmF5IG9mIGF2YWlsYWJsZSBvcHRpb25zOiBPYmplY3RzLCBTdHJpbmdzIG9yIEludGVnZXJzLlxuXHRcdCAqIElmIGFycmF5IG9mIG9iamVjdHMsIHZpc2libGUgbGFiZWwgd2lsbCBkZWZhdWx0IHRvIG9wdGlvbi5sYWJlbC5cblx0XHQgKiBJZiBgbGFiYWxgIHByb3AgaXMgcGFzc2VkLCBsYWJlbCB3aWxsIGVxdWFsIG9wdGlvblsnbGFiZWwnXVxuXHRcdCAqL1xuXHRcdG9wdGlvbnM6IHtcblx0XHRcdHR5cGU6IEFycmF5LFxuXHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEVuYWJsZSB0aGUgYmlnIHVzZXIgc2VsZWN0b3Igdy8gYXZhdGFyXG5cdFx0ICogTWFrZSBzdXJlIHlvdXIgb2JqZWN0cyBmaXQgdGhlIHJlcXVpcmVtZW50c1xuXHRcdCAqL1xuXHRcdHVzZXJTZWxlY3Q6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIE92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc2xvdC4gT25seSBzaG93aW5nIGEgc3BpbmVyLlxuXHRcdCAqL1xuXHRcdGxvYWRpbmc6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEVuYWJsZSB0aGUgYXV0b21hdGljIGxpbWl0IGFuZCB3aWR0aCBjYWxjdWxhdGlvblxuXHRcdCAqIE9ubHkgd29ya3Mgb24gbXVsdGlwbGVcblx0XHQgKi9cblx0XHRhdXRvTGltaXQ6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiB0cnVlLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0KiBJZiBhdXRvTGltaXQsIGFsbG93IHRvIHNwZWNpZnkgdGhlIG1pbi13aWR0aCBvZiBldmVyeVxuXHRcdCogc2VsZWN0ZWQgb3B0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG51bWJlciBvZiBvcHRpb25zXG5cdFx0KiB0byBzaG93LiBUaGlzIG5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlci5cblx0XHQqL1xuXHRcdHRhZ1dpZHRoOiB7XG5cdFx0XHR0eXBlOiBOdW1iZXIsXG5cdFx0XHRkZWZhdWx0OiAxNTAsXG5cdFx0XHR2YWxpZGF0b3I6ICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPiAwXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH0sXG5cblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZWxXaWR0aDogMCxcblx0XHR9XG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0LyoqXG5cdFx0ICogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2Ygb3B0aW9ucyB0byBzaG93XG5cdFx0ICogZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgc2VsZWN0LlxuXHRcdCAqIE9ubHkgd29ya3MgaWYgYGF1dG9MaW1pdGAgaXMgYHRydWVgXG5cdFx0ICogQHJldHVybnMge251bWJlcn1cblx0XHQgKi9cblx0XHRtYXhPcHRpb25zKCkge1xuXHRcdFx0aWYgKHRoaXMuYXV0b0xpbWl0ICYmIHRoaXMuZWxXaWR0aCA+IDAgJiYgdGhpcy50YWdXaWR0aCAhPT0gMCkge1xuXHRcdFx0XHRjb25zdCBsaW1pdCA9IE1hdGguZmxvb3IodGhpcy5lbFdpZHRoIC8gdGhpcy50YWdXaWR0aClcblx0XHRcdFx0cmV0dXJuIGxpbWl0ID4gMCA/IGxpbWl0IDogMVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMubGltaXQgPyB0aGlzLmxpbWl0IDogOTk5OVxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogTWFrZSB0aGUgdG9vbHRpcCBsaW1pdCBzdHJpbmcgZm9yIHRoZSBgYXV0b0xpbWl0YFxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0bGltaXRTdHJpbmcoKSB7XG5cdFx0XHRyZXR1cm4gYCske3RoaXMudmFsdWUubGVuZ3RoIC0gdGhpcy5tYXhPcHRpb25zfWBcblx0XHR9LFxuXG5cdFx0bG9jYWxWYWx1ZToge1xuXHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRpZiAodGhpcy50cmFja0J5ICYmIHRoaXMub3B0aW9uc1xuXHRcdFx0XHRcdCYmIHR5cGVvZiB0aGlzLnZhbHVlICE9PSAnb2JqZWN0J1xuXHRcdFx0XHRcdCYmIHRoaXMub3B0aW9uc1t0aGlzLnZhbHVlXSkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnNbdGhpcy52YWx1ZV1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcy52YWx1ZVxuXHRcdFx0fSxcblx0XHRcdHNldCh2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRlbWl0KCd1cGRhdGU6dmFsdWUnLCB2YWx1ZSlcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlJywgdmFsdWUpXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH0sXG5cblx0d2F0Y2g6IHtcblx0XHQvLyBlbnN1cmUgd2UgdXBkYXRlIHRoZSB3aWR0aCB3aGVuIHdlIGFkZCBvciByZW1vdmUgZGF0YVxuXHRcdHZhbHVlKCkge1xuXHRcdFx0dGhpcy51cGRhdGVXaWR0aCgpXG5cdFx0fSxcblx0fSxcblxuXHRtb3VudGVkKCkge1xuXHRcdHRoaXMudXBkYXRlV2lkdGgoKVxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnVwZGF0ZVdpZHRoKVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnVwZGF0ZVdpZHRoKVxuXHR9LFxuXG5cdG1ldGhvZHM6IHtcblx0XHQvKipcblx0XHQgKiBSZXR1cm5zIHRoZSBvcHRpb24gbGFiZWxcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb24gVGhlIHNlbGVjdGVkIG9wdGlvblxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Z2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG5cdFx0XHRyZXR1cm4gU3RyaW5nKHRoaXMuJHJlZnMuVnVlTXVsdGlzZWxlY3Q/LmdldE9wdGlvbkxhYmVsKG9wdGlvbikpXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBGb3JtYXQgYXJyYXkgb2YgZ3JvdXBzIG9iamVjdHMgdG8gYSBzdHJpbmdcblx0XHQgKiBmb3IgdGhlIGxpbWl0IHBvcHVwIHVzaW5nIHRoZSBsYWJlbCBwcm9wXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2FycmF5fSBvcHRpb25zIFRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRmb3JtYXRMaW1pdFRpdGxlKG9wdGlvbnMpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsZXQgc2VsZWN0aW9uID0gb3B0aW9uc1xuXHRcdFx0XHRpZiAodHlwZW9mIG9wdGlvbnNbMF0gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0c2VsZWN0aW9uID0gb3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvblt0aGlzLmxhYmVsXSlcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2VsZWN0aW9uLnNsaWNlKHRoaXMubWF4T3B0aW9ucykuam9pbignLCAnKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICcnXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFVwZGF0ZSB0aGUgY29tcG9uZW50IHdpZHRoIGRhdGFcblx0XHQgKi9cblx0XHR1cGRhdGVXaWR0aCgpIHtcblx0XHRcdC8vIHdpZHRoIG9mIHRoZSB0YWdzIHdyYXBwZXIgbWludXMgdGhlIHBhZGRpbmdcblx0XHRcdGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yKCcubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcCcpKSB7XG5cdFx0XHRcdHRoaXMuZWxXaWR0aCA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5tdWx0aXNlbGVjdF9fdGFncy13cmFwJykub2Zmc2V0V2lkdGggLSAxMFxuXHRcdFx0fVxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cbiIsIjwhLS1cbiAgLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuICAtXG4gIC0gQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuICAtXG4gIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gIC1cbiAgLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuLS0+XG5cbjxkb2NzPlxuXG4jIyMgR2VuZXJhbCBkZXNjcmlwdGlvblxuXG5UaGlzIGNvbXBvbmVudCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgdGhlIHYtY29tcG9uZW50IHBsdWdpbiBieSBBa3J5dW0sXG5wbGVhc2UgcmVmZXIgdG8gdGhpcyBkb2N1bWVudGF0aW9uIGZvciBjdXN0b21pemF0aW9uOlxuaHR0cHM6Ly9naXRodWIuY29tL0Frcnl1bS92LXRvb2x0aXBcblxuVGhpcyBjb21wb25lbnRzIGhhcyB0d28gc2xvdHM6XG4qICd0cmlnZ2VyJyB3aGljaCBjYW4gYmUgYW55IGh0bWwgZWxlbWVudCBhbmQgaXQgd2lsbCB0cmlnZ2VyIHRoZSBwb3BvdmVyXG50aGlzIHNsb3QgaXMgb3B0aW9uYWwgc2luY2UgeW91IGNhbiB0b2dnbGUgdGhlIHBvcG92ZXIgYWxzbyBieSB1cGRhdGluZyB0aGVcbm9wZW4gcHJvcCBvbiB0aGlzIGNvbXBvbmVudDtcblxuKiBhIGRlZmF1bHQgc2xvdCB0aGF0IGlzIGZvciB0aGUgY29udGVudCBvZiB0aGUgcG9wb3Zlci5cblxuIyMjIEV4YW1wbGVzXG5cbldpdGggYSBgPGJ1dHRvbj5gIGFzIGEgdHJpZ2dlcjpcbmBgYHZ1ZVxuPHRlbXBsYXRlPlxuXHQ8UG9wb3Zlcj5cblx0XHQ8YnV0dG9uIHNsb3Q9XCJ0cmlnZ2VyXCI+IEkgYW0gdGhlIHRyaWdnZXIgPC9idXR0b24+XG5cdFx0PHRlbXBsYXRlPlxuXHRcdDxoMj50aGlzIGlzIHNvbWUgY29udGVudDwvaDI+XG5cdFx0PC90ZW1wbGF0ZT5cblx0PC9Qb3BvdmVyPlxuPC90ZW1wbGF0ZT5cbmBgYFxuPC9kb2NzPlxuXG48dGVtcGxhdGU+XG5cdDxWUG9wb3ZlclxuXHRcdHJlZj1cInBvcG92ZXJcIlxuXHRcdHYtYmluZD1cIiRhdHRyc1wiXG5cdFx0cG9wb3Zlci1iYXNlLWNsYXNzPVwicG9wb3ZlclwiXG5cdFx0cG9wb3Zlci13cmFwcGVyLWNsYXNzPVwicG9wb3Zlcl9fd3JhcHBlclwiXG5cdFx0cG9wb3Zlci1hcnJvdy1jbGFzcz1cInBvcG92ZXJfX2Fycm93XCJcblx0XHRwb3BvdmVyLWlubmVyLWNsYXNzPVwicG9wb3Zlcl9faW5uZXJcIlxuXHRcdHYtb249XCIkbGlzdGVuZXJzXCI+XG5cdFx0PCEtLSBUaGlzIHdpbGwgYmUgdGhlIHBvcG92ZXIgdGFyZ2V0IChmb3IgdGhlIGV2ZW50cyBhbmQgcG9zaXRpb24pIC0tPlxuXHRcdDxzbG90IG5hbWU9XCJ0cmlnZ2VyXCIgLz5cblx0XHQ8IS0tIFRoaXMgd2lsbCBiZSB0aGUgY29udGVudCBvZiB0aGUgcG9wb3ZlciAtLT5cblx0XHQ8dGVtcGxhdGUgc2xvdD1cInBvcG92ZXJcIj5cblx0XHRcdDxzbG90IC8+XG5cdFx0PC90ZW1wbGF0ZT5cblx0PC9WUG9wb3Zlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBWUG9wb3ZlciB9IGZyb20gJ3YtdG9vbHRpcCdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnUG9wb3ZlcicsXG5cdGNvbXBvbmVudHM6IHtcblx0XHRWUG9wb3Zlcixcblx0fSxcblxuXHRtb3VudGVkKCkge1xuXHRcdHRoaXMuJHdhdGNoKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHQvLyByZXF1aXJlZCBiZWNhdXNlIHYtdG9vbHRpcCBkb2Vzbid0IHByb3ZpZGUgZXZlbnRzXG5cdFx0XHRcdC8vIGFuZCBAc2hvdyBpcyB0b28gZWFybHlcblx0XHRcdFx0Ly8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Ba3J5dW0vdi10b29sdGlwL2lzc3Vlcy82NjFcblx0XHRcdFx0cmV0dXJuIHRoaXMuJHJlZnMucG9wb3Zlci5pc09wZW5cblx0XHRcdH0sXG5cdFx0XHQodmFsKSA9PiB7XG5cdFx0XHRcdGlmICh2YWwpIHtcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIHRvb2x0aXAgd2FzIHZpc3VhbGx5IGRpc3BsYXllZC5cblx0XHRcdFx0XHQgKlxuXHRcdFx0XHRcdCAqIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlICdzaG93JyBhbmQgJ2FwcGx5LXNob3cnIHdoaWNoXG5cdFx0XHRcdFx0ICogcnVuIGVhcmxpZXIgdGhhbiB0aGlzIHdoZXJlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZVxuXHRcdFx0XHRcdCAqIHRvb2x0aXAgaXMgYWxyZWFkeSB2aXNpYmxlIGFuZCBpbiB0aGUgRE9NLlxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2FmdGVyLXNob3cnKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIFRyaWdnZXJlZCBhZnRlciB0aGUgdG9vbHRpcCB3YXMgdmlzdWFsbHkgaGlkZGVuLlxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2FmdGVyLWhpZGUnKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KVxuXHR9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuJGFycm93LXdpZHRoOiAxMHB4O1xuXG4ucG9wb3ZlciB7XG5cdHotaW5kZXg6IDEwMDAwMDtcblx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuXHRmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDEwcHggdmFyKC0tY29sb3ItYm94LXNoYWRvdykpO1xuXG5cdCZfX2lubmVyIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XG5cdH1cblxuXHQmX19hcnJvdyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0d2lkdGg6IDA7XG5cdFx0aGVpZ2h0OiAwO1xuXHRcdG1hcmdpbjogJGFycm93LXdpZHRoO1xuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xuXHR9XG5cblx0Jlt4LXBsYWNlbWVudF49J3RvcCddIHtcblx0XHRtYXJnaW4tYm90dG9tOiAkYXJyb3ctd2lkdGg7XG5cblx0XHQucG9wb3Zlcl9fYXJyb3cge1xuXHRcdFx0Ym90dG9tOiAtJGFycm93LXdpZHRoO1xuXHRcdFx0bGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggMCAkYXJyb3ctd2lkdGg7XG5cdFx0XHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0Jlt4LXBsYWNlbWVudF49J2JvdHRvbSddIHtcblx0XHRtYXJnaW4tdG9wOiAkYXJyb3ctd2lkdGg7XG5cblx0XHQucG9wb3Zlcl9fYXJyb3cge1xuXHRcdFx0dG9wOiAtJGFycm93LXdpZHRoO1xuXHRcdFx0bGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRib3JkZXItd2lkdGg6IDAgJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGg7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0Jlt4LXBsYWNlbWVudF49J3JpZ2h0J10ge1xuXHRcdG1hcmdpbi1sZWZ0OiAkYXJyb3ctd2lkdGg7XG5cblx0XHQucG9wb3Zlcl9fYXJyb3cge1xuXHRcdFx0dG9wOiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XG5cdFx0XHRsZWZ0OiAtJGFycm93LXdpZHRoO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0XHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoIDA7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdCZbeC1wbGFjZW1lbnRePSdsZWZ0J10ge1xuXHRcdG1hcmdpbi1yaWdodDogJGFycm93LXdpZHRoO1xuXG5cdFx0LnBvcG92ZXJfX2Fycm93IHtcblx0XHRcdHRvcDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xuXHRcdFx0cmlnaHQ6IC0kYXJyb3ctd2lkdGg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRcdGJvcmRlci13aWR0aDogJGFycm93LXdpZHRoIDAgJGFycm93LXdpZHRoICRhcnJvdy13aWR0aDtcblx0XHRcdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdCZbYXJpYS1oaWRkZW49J3RydWUnXSB7XG5cdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKSwgdmlzaWJpbGl0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spO1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cblxuXHQmW2FyaWEtaGlkZGVuPSdmYWxzZSddIHtcblx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKTtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG59XG5cbjwvc3R5bGU+XG4iLCI8IS0tXG4gIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTggSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICAtXG4gIC0gQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gIC1cbiAgLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAgLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAgLSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gIC0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAgLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAgLVxuICAtIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gIC1cbiAgLS0+XG5cbjxkb2NzPlxuXHRUaGlzIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRoZSBbQWN0aW9uc10oIy9Db21wb25lbnRzP2lkPWFjdGlvbnMtMSkgY29tcG9uZW50IGluc3RlYWQuXG48L2RvY3M+XG5cbjx0ZW1wbGF0ZT5cblx0PHVsIGNsYXNzPVwicG9wb3Zlcl9fbWVudVwiPlxuXHRcdDxQb3BvdmVyTWVudUl0ZW0gdi1mb3I9XCIoaXRlbSwga2V5KSBpbiBtZW51XCIgOmtleT1cImtleVwiIDppdGVtPVwiaXRlbVwiIC8+XG5cdDwvdWw+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IFBvcG92ZXJNZW51SXRlbSBmcm9tICcuL1BvcG92ZXJNZW51SXRlbSdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnUG9wb3Zlck1lbnUnLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0UG9wb3Zlck1lbnVJdGVtLFxuXHR9LFxuXHRwcm9wczoge1xuXHRcdG1lbnU6IHtcblx0XHRcdHR5cGU6IEFycmF5LFxuXHRcdFx0ZGVmYXVsdDogKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gW3tcblx0XHRcdFx0XHRocmVmOiAnaHR0cHM6Ly9uZXh0Y2xvdWQuY29tJyxcblx0XHRcdFx0XHRpY29uOiAnaWNvbi1saW5rcycsXG5cdFx0XHRcdFx0dGV4dDogJ05leHRjbG91ZCcsXG5cdFx0XHRcdH1dXG5cdFx0XHR9LFxuXHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0fSxcblx0fSxcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG51bCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG48L3N0eWxlPlxuIiwiPCEtLVxuICAtIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAgLVxuICAtIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICAtXG4gIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gIC1cbiAgLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICAtXG4gIC0tPlxuXG48dGVtcGxhdGU+XG5cdDxsaSBjbGFzcz1cInBvcG92ZXJfX21lbnVpdGVtXCI+XG5cdFx0PCEtLSBJZiBpdGVtLmhyZWYgaXMgc2V0LCBhIGxpbmsgd2lsbCBiZSBkaXJlY3RseSB1c2VkIC0tPlxuXHRcdDxhIHYtaWY9XCJpdGVtLmhyZWZcIlxuXHRcdFx0OmhyZWY9XCIoaXRlbS5ocmVmKSA/IGl0ZW0uaHJlZiA6ICcjJyBcIlxuXHRcdFx0OnRhcmdldD1cIihpdGVtLnRhcmdldCkgPyBpdGVtLnRhcmdldCA6ICcnIFwiXG5cdFx0XHQ6ZG93bmxvYWQ9XCJpdGVtLmRvd25sb2FkXCJcblx0XHRcdGNsYXNzPVwiZm9jdXNhYmxlXCJcblx0XHRcdHJlbD1cIm5vcmVmZXJyZXIgbm9vcGVuZXJcIlxuXHRcdFx0QGNsaWNrPVwiYWN0aW9uXCI+XG5cdFx0XHQ8c3BhbiB2LWlmPVwiIWljb25Jc1VybFwiIDpjbGFzcz1cIml0ZW0uaWNvblwiIC8+XG5cdFx0XHQ8aW1nIHYtZWxzZSA6c3JjPVwiaXRlbS5pY29uXCI+XG5cdFx0XHQ8cCB2LWlmPVwiaXRlbS50ZXh0ICYmIGl0ZW0ubG9uZ3RleHRcIj5cblx0XHRcdFx0PHN0cm9uZyBjbGFzcz1cIm1lbnVpdGVtLXRleHRcIj5cblx0XHRcdFx0XHR7eyBpdGVtLnRleHQgfX1cblx0XHRcdFx0PC9zdHJvbmc+PGJyPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLXRleHQtZGV0YWlsXCI+XG5cdFx0XHRcdFx0e3sgaXRlbS5sb25ndGV4dCB9fVxuXHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHQ8L3A+XG5cdFx0XHQ8c3BhbiB2LWVsc2UtaWY9XCJpdGVtLnRleHRcIj5cblx0XHRcdFx0e3sgaXRlbS50ZXh0IH19XG5cdFx0XHQ8L3NwYW4+XG5cdFx0XHQ8cCB2LWVsc2UtaWY9XCJpdGVtLmxvbmd0ZXh0XCI+XG5cdFx0XHRcdHt7IGl0ZW0ubG9uZ3RleHQgfX1cblx0XHRcdDwvcD5cblx0XHQ8L2E+XG5cblx0XHQ8IS0tIElmIGl0ZW0uaW5wdXQgaXMgc2V0IGluc3RlYWQsIGFuIHB1dCB3aWxsIGJlIHVzZWQgLS0+XG5cdFx0PHNwYW4gdi1lbHNlLWlmPVwiaXRlbS5pbnB1dFwiIGNsYXNzPVwibWVudWl0ZW1cIiA6Y2xhc3M9XCJ7YWN0aXZlOiBpdGVtLmFjdGl2ZX1cIj5cblx0XHRcdDwhLS0gZG9lcyBub3Qgc2hvdyBpZiBpbnB1dCBpcyBjaGVja2JveCAtLT5cblx0XHRcdDxzcGFuIHYtaWY9XCJpdGVtLmlucHV0ICE9PSAnY2hlY2tib3gnXCIgOmNsYXNzPVwiaXRlbS5pY29uXCIgLz5cblxuXHRcdFx0PCEtLSBvbmx5IHNob3dzIGlmIGlucHV0IGlzIHRleHQgLS0+XG5cdFx0XHQ8Zm9ybSB2LWlmPVwiaXRlbS5pbnB1dCA9PT0gJ3RleHQnXCJcblx0XHRcdFx0OmNsYXNzPVwiaXRlbS5pbnB1dFwiXG5cdFx0XHRcdEBzdWJtaXQucHJldmVudD1cIml0ZW0uYWN0aW9uXCI+XG5cdFx0XHRcdDxpbnB1dCA6dHlwZT1cIml0ZW0uaW5wdXRcIlxuXHRcdFx0XHRcdDp2YWx1ZT1cIml0ZW0udmFsdWVcIlxuXHRcdFx0XHRcdDpwbGFjZWhvbGRlcj1cIml0ZW0udGV4dFwiXG5cdFx0XHRcdFx0cmVxdWlyZWQ+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJcIiBjbGFzcz1cImljb24tY29uZmlybVwiPlxuXHRcdFx0PC9mb3JtPlxuXG5cdFx0XHQ8IS0tIGNoZWNrYm94IC0tPlxuXHRcdFx0PHRlbXBsYXRlIHYtZWxzZT5cblx0XHRcdFx0PCEtLSBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgLS0+XG5cdFx0XHRcdDxpbnB1dCA6aWQ9XCJrZXlcIiB2LW1vZGVsPVwiaXRlbS5tb2RlbFwiXG5cdFx0XHRcdFx0OnR5cGU9XCJpdGVtLmlucHV0XCJcblx0XHRcdFx0XHQ6Y2xhc3M9XCJpdGVtLmlucHV0XCJcblx0XHRcdFx0XHRAY2hhbmdlPVwiaXRlbS5hY3Rpb25cIj5cblx0XHRcdFx0PGxhYmVsIDpmb3I9XCJrZXlcIiBAY2xpY2suc3RvcC5wcmV2ZW50PVwiaXRlbS5hY3Rpb25cIj5cblx0XHRcdFx0XHR7eyBpdGVtLnRleHQgfX1cblx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdDwvdGVtcGxhdGU+XG5cdFx0PC9zcGFuPlxuXG5cdFx0PCEtLSBJZiBpdGVtLmFjdGlvbiBpcyBzZXQgaW5zdGVhZCwgYSBidXR0b24gd2lsbCBiZSB1c2VkIC0tPlxuXHRcdDxidXR0b24gdi1lbHNlLWlmPVwiaXRlbS5hY3Rpb25cIlxuXHRcdFx0Y2xhc3M9XCJtZW51aXRlbSBmb2N1c2FibGVcIlxuXHRcdFx0OmNsYXNzPVwie2FjdGl2ZTogaXRlbS5hY3RpdmV9XCJcblx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxuXHRcdFx0QGNsaWNrLnN0b3AucHJldmVudD1cIml0ZW0uYWN0aW9uXCI+XG5cdFx0XHQ8c3BhbiA6Y2xhc3M9XCJpdGVtLmljb25cIiAvPlxuXHRcdFx0PHAgdi1pZj1cIml0ZW0udGV4dCAmJiBpdGVtLmxvbmd0ZXh0XCI+XG5cdFx0XHRcdDxzdHJvbmcgY2xhc3M9XCJtZW51aXRlbS10ZXh0XCI+XG5cdFx0XHRcdFx0e3sgaXRlbS50ZXh0IH19XG5cdFx0XHRcdDwvc3Ryb25nPjxicj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZW51aXRlbS10ZXh0LWRldGFpbFwiPlxuXHRcdFx0XHRcdHt7IGl0ZW0ubG9uZ3RleHQgfX1cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0PC9wPlxuXHRcdFx0PHNwYW4gdi1lbHNlLWlmPVwiaXRlbS50ZXh0XCI+XG5cdFx0XHRcdHt7IGl0ZW0udGV4dCB9fVxuXHRcdFx0PC9zcGFuPlxuXHRcdFx0PHAgdi1lbHNlLWlmPVwiaXRlbS5sb25ndGV4dFwiPlxuXHRcdFx0XHR7eyBpdGVtLmxvbmd0ZXh0IH19XG5cdFx0XHQ8L3A+XG5cdFx0PC9idXR0b24+XG5cblx0XHQ8IS0tIElmIGl0ZW0ubG9uZ3RleHQgaXMgc2V0IEFORCB0aGUgaXRlbSBkb2VzIG5vdCBoYXZlIGFuIGFjdGlvbiAtLT5cblx0XHQ8c3BhbiB2LWVsc2UgY2xhc3M9XCJtZW51aXRlbVwiIDpjbGFzcz1cInthY3RpdmU6IGl0ZW0uYWN0aXZlfVwiPlxuXHRcdFx0PHNwYW4gOmNsYXNzPVwiaXRlbS5pY29uXCIgLz5cblx0XHRcdDxwIHYtaWY9XCJpdGVtLnRleHQgJiYgaXRlbS5sb25ndGV4dFwiPlxuXHRcdFx0XHQ8c3Ryb25nIGNsYXNzPVwibWVudWl0ZW0tdGV4dFwiPlxuXHRcdFx0XHRcdHt7IGl0ZW0udGV4dCB9fVxuXHRcdFx0XHQ8L3N0cm9uZz48YnI+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwibWVudWl0ZW0tdGV4dC1kZXRhaWxcIj5cblx0XHRcdFx0XHR7eyBpdGVtLmxvbmd0ZXh0IH19XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdDwvcD5cblx0XHRcdDxzcGFuIHYtZWxzZS1pZj1cIml0ZW0udGV4dFwiPlxuXHRcdFx0XHR7eyBpdGVtLnRleHQgfX1cblx0XHRcdDwvc3Bhbj5cblx0XHRcdDxwIHYtZWxzZS1pZj1cIml0ZW0ubG9uZ3RleHRcIj5cblx0XHRcdFx0e3sgaXRlbS5sb25ndGV4dCB9fVxuXHRcdFx0PC9wPlxuXHRcdDwvc3Bhbj5cblx0PC9saT5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICdQb3BvdmVyTWVudUl0ZW0nLFxuXHRwcm9wczoge1xuXHRcdGl0ZW06IHtcblx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdFx0ZGVmYXVsdDogKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGtleTogJ25leHRjbG91ZC1saW5rJyxcblx0XHRcdFx0XHRocmVmOiAnaHR0cHM6Ly9uZXh0Y2xvdWQuY29tJyxcblx0XHRcdFx0XHRpY29uOiAnaWNvbi1saW5rcycsXG5cdFx0XHRcdFx0dGV4dDogJ05leHRjbG91ZCcsXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvLyBjaGVjayB0aGUgaW5wdXQgdHlwZXNcblx0XHRcdC8vIFRPRE86IGFkZCBtb3JlIHZhbGlkYXRpb24gb2YgdHlwZXNcblx0XHRcdHZhbGlkYXRvcjogaXRlbSA9PiB7XG5cdFx0XHRcdC8vIFRPRE86IHN1cHBvcnQgcmFkaW9cblx0XHRcdFx0aWYgKGl0ZW0uaW5wdXQpIHtcblx0XHRcdFx0XHRyZXR1cm4gWyd0ZXh0JywgJ2NoZWNrYm94J10uaW5kZXhPZihpdGVtLmlucHV0KSAhPT0gLTFcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0fSxcblx0XHR9LFxuXHR9LFxuXHRjb21wdXRlZDoge1xuXHRcdC8vIHJhbmRvbSBrZXkgZm9yIGlucHV0cyBiaW5kaW5nIGlmIG5vdCBwcm92aWRlZFxuXHRcdGtleSgpIHtcblx0XHRcdHJldHVybiB0aGlzLml0ZW0ua2V5XG5cdFx0XHRcdD8gdGhpcy5pdGVtLmtleVxuXHRcdFx0XHQ6IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDE2ICogMTAwMDAwMCkudG9TdHJpbmcoMTYpXG5cdFx0fSxcblx0XHRpY29uSXNVcmwoKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3XG5cdFx0XHRcdG5ldyBVUkwodGhpcy5pdGVtLmljb24pXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHR9IGNhdGNoIChfKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHQvLyBhbGxvdyB1cyB0byB1c2UgYm90aCBsaW5rIGFuZCBhbiBhY3Rpb24gb24gYGFgXG5cdFx0Ly8gd2Ugc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUgaXRlbS5hY3Rpb24gZXhpc3RzXG5cdFx0YWN0aW9uKGV2ZW50KSB7XG5cdFx0XHRpZiAodGhpcy5pdGVtLmFjdGlvbikge1xuXHRcdFx0XHR0aGlzLml0ZW0uYWN0aW9uKGV2ZW50KVxuXHRcdFx0fVxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cblx0YnV0dG9uLm1lbnVpdGVtIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG5cblx0YnV0dG9uLm1lbnVpdGVtICoge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdGJ1dHRvbi5tZW51aXRlbTpkaXNhYmxlZCB7XG5cdFx0b3BhY2l0eTogMC41ICFpbXBvcnRhbnQ7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG5cblx0YnV0dG9uLm1lbnVpdGVtOmRpc2FibGVkICoge1xuXHRcdGN1cnNvcjogZGVmYXVsdDtcblx0fVxuXG5cdC5tZW51aXRlbS5hY3RpdmUge1xuXHRcdGJveC1zaGFkb3c6IGluc2V0IDJweCAwIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdH1cbjwvc3R5bGU+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbmxpIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleDogMCAwIGF1dG87XG5cblx0Ji5oaWRkZW4ge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQ+IGJ1dHRvbixcblx0PiBhLFxuXHQ+IC5tZW51aXRlbSB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGxpbmUtaGVpZ2h0OiAkY2xpY2thYmxlLWFyZWE7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7IC8vIG90aGVyd2lzZSBTYWZhcmkgd2lsbCBjdXQgdGhlIGJvcmRlci1yYWRpdXMgYXJlYVxuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG9wYWNpdHk6ICRvcGFjaXR5X25vcm1hbDtcblxuXHRcdC8vIFRPRE8gc3BsaXQgaW50byBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZm9yIHJlYWRhYmlsaXR5XG5cdFx0c3BhbltjbGFzc149J2ljb24tJ10sXG5cdFx0c3BhbltjbGFzcyo9JyBpY29uLSddLFxuXHRcdCZbY2xhc3NePSdpY29uLSddLFxuXHRcdCZbY2xhc3MqPScgaWNvbi0nXSB7XG5cdFx0XHRtaW4td2lkdGg6IDA7IC8qIE92ZXJ3cml0ZSBpY29ucyovXG5cdFx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogI3skaWNvbi1tYXJnaW59IGNlbnRlcjtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogJGljb24tc2l6ZTtcblx0XHR9XG5cblx0XHRzcGFuW2NsYXNzXj0naWNvbi0nXSxcblx0XHRzcGFuW2NsYXNzKj0nIGljb24tJ10ge1xuXHRcdFx0LyogS2VlcCBwYWRkaW5nIHRvIGRlZmluZSB0aGUgd2lkdGggdG9cblx0XHRcdFx0YXNzdXJlIGNvcnJlY3QgcG9zaXRpb24gb2YgYSBwb3NzaWJsZSB0ZXh0ICovXG5cdFx0XHRwYWRkaW5nOiAjeyRjbGlja2FibGUtYXJlYSAvIDJ9IDAgI3skY2xpY2thYmxlLWFyZWEgLyAyfSAkY2xpY2thYmxlLWFyZWE7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgbm8gaWNvbnMgc2V0LCBmb3JjZSBsZWZ0IG1hcmdpbiB0byBhbGlnblxuXHRcdCY6bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSB7XG5cdFx0XHQ+IHNwYW4sXG5cdFx0XHQ+IGlucHV0LFxuXHRcdFx0PiBmb3JtIHtcblx0XHRcdFx0Jjpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0XHRtYXJnaW4tbGVmdDogJGNsaWNrYWJsZS1hcmVhO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0JltjbGFzc149J2ljb24tJ10sXG5cdFx0JltjbGFzcyo9JyBpY29uLSddIHtcblx0XHRcdHBhZGRpbmc6IDAgJGljb24tbWFyZ2luIDAgJGNsaWNrYWJsZS1hcmVhO1xuXHRcdH1cblxuXHRcdCY6bm90KDpkaXNhYmxlZCk6aG92ZXIsXG5cdFx0Jjpub3QoOmRpc2FibGVkKTpmb2N1cyxcblx0XHQmOm5vdCg6ZGlzYWJsZWQpLmFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0LyogcHJldmVudCAuYWN0aW9uIGNsYXNzIHRvIGJyZWFrIHRoZSBkZXNpZ24gKi9cblx0XHQmLmFjdGlvbiB7XG5cdFx0XHRwYWRkaW5nOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0PiBzcGFuIHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0Ly8gbG9uZyB0ZXh0IGFyZWFcblx0XHQ+IHAge1xuXHRcdFx0d2lkdGg6IDE1MHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNmVtO1xuXHRcdFx0cGFkZGluZzogOHB4IDA7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXG5cdFx0XHQvLyBpbiBjYXNlIHRoZXJlIGFyZSBubyBzcGFjZXMgbGlrZSBsb25nIGVtYWlsIGFkZHJlc3Nlc1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdC8vIFRPRE86IGRvIHdlIHJlYWxseSBzdXBwb3J0cyBpdD9cblx0XHQ+IHNlbGVjdCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRtYXJnaW4tbGVmdDogNnB4O1xuXHRcdH1cblxuXHRcdC8qIEFkZCBwYWRkaW5nIGlmIGNvbnRhaW5zIGljb24rdGV4dCAqL1xuXHRcdCY6bm90KDplbXB0eSkge1xuXHRcdFx0cGFkZGluZy1yaWdodDogJGljb24tbWFyZ2luICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0LyogREVQUkVDQVRFRCEgb2xkIGltZyBpbiBwb3BvdmVyIGZhbGxiYWNrXG5cdFx0XHQqIFRPRE86IHRvIHJlbW92ZSAqL1xuXHRcdD4gaW1nIHtcblx0XHRcdHdpZHRoOiAkaWNvbi1zaXplO1xuXHRcdFx0cGFkZGluZzogJGljb24tbWFyZ2luO1xuXHRcdH1cblxuXHRcdC8qIGNoZWNrYm94L3JhZGlvIGZpeGVzICovXG5cdFx0PiBpbnB1dC5yYWRpbyArIGxhYmVsLFxuXHRcdD4gaW5wdXQuY2hlY2tib3ggKyBsYWJlbCB7XG5cdFx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdFx0PiBpbnB1dC5jaGVja2JveCArIGxhYmVsOjpiZWZvcmUge1xuXHRcdFx0bWFyZ2luOiAtMnB4IDEzcHggMDtcblx0XHR9XG5cdFx0PiBpbnB1dC5yYWRpbyArIGxhYmVsOjpiZWZvcmUge1xuXHRcdFx0bWFyZ2luOiAtMnB4IDEycHggMDtcblx0XHR9XG5cdFx0PiBpbnB1dDpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9aW1hZ2VdKSB7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0fVxuXG5cdFx0Ly8gRm9ybXMgJiB0ZXh0IGlucHV0c1xuXHRcdGZvcm0ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdFx0LyogcHV0IGEgc21hbGwgc3BhY2UgYmV0d2VlbiB0ZXh0IGFuZCBmb3JtXG5cdFx0XHRcdGlmIHRoZXJlIGlzIGFuIGVsZW1lbnQgYmVmb3JlICovXG5cdFx0XHQmOm5vdCg6Zmlyc3QtY2hpbGQpICB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA1cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8qIG5vIG1hcmdpbiBpZiBoaWRkZW4gc3BhbiBiZWZvcmUgKi9cblx0XHQ+IHNwYW4uaGlkZGVuICsgZm9ybSxcblx0XHQ+IHNwYW5bc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSArIGZvcm0ge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0fVxuXHRcdC8qIElucHV0cyBpbnNpZGUgcG9wb3ZlciBzdXBwb3J0cyB0ZXh0LCBzdWJtaXQgJiByZXNldCAqL1xuXHRcdGlucHV0IHtcblx0XHRcdG1pbi13aWR0aDogJGNsaWNrYWJsZS1hcmVhO1xuXHRcdFx0bWF4LWhlaWdodDogI3skY2xpY2thYmxlLWFyZWEgLSA0cHh9OyAvKiB0d2ljZSB0aGUgZWxlbWVudCBtYXJnaW4teSAqL1xuXHRcdFx0bWFyZ2luOiAycHggMDtcblx0XHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdFx0Ly8gc3BhY2UgYmV0d2VlbiBpbmxpbmUgaW5wdXRzXG5cdFx0XHQmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDVweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBUT0RPOiBkbyB0aGF0IGluIGpzLCBzaG91bGQgYmUgY2xlYW5lclxuXHQvKiBjc3MgaGFjaywgb25seSBmaXJzdCBub3QgaGlkZGVuICovXG5cdCY6bm90KC5oaWRkZW4pOm5vdChbc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSkge1xuXHRcdCY6Zmlyc3Qtb2YtdHlwZSB7XG5cdFx0XHQ+IGJ1dHRvbiwgPiBhLCA+IC5tZW51aXRlbSB7XG5cdFx0XHRcdD4gZm9ybSwgPiBpbnB1dCB7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogJGljb24tbWFyZ2luIC0gMnB4OyAvLyBtaW51cyB0aGUgaW5wdXQgbWFyZ2luXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0PiBidXR0b24sID4gYSwgPiAubWVudWl0ZW0ge1xuXHRcdFx0XHQ+IGZvcm0sID4gaW5wdXQge1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206ICRpY29uLW1hcmdpbiAtIDJweDsgLy8gbWludXMgdGhlIGlucHV0IG1hcmdpblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdD4gYnV0dG9uIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdHNwYW4ge1xuXHRcdFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcblx0XHR9XG5cdH1cbn1cbjwvc3R5bGU+XG4iLCI8IS0tXG4gIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMjAgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICAtXG4gIC0gQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gIC1cbiAgLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAgLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAgLSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICAtXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gIC0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAgLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAgLVxuICAtIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4tLT5cblxuPHRlbXBsYXRlPlxuXHQ8c3BhbiA6Y2xhc3M9XCJ7J21lbnRpb24tYnViYmxlLS1wcmltYXJ5JzogcHJpbWFyeX1cIlxuXHRcdGNsYXNzPVwibWVudGlvbi1idWJibGVcIlxuXHRcdGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCI+XG5cdFx0PHNwYW4gY2xhc3M9XCJtZW50aW9uLWJ1YmJsZV9fd3JhcHBlclwiPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJtZW50aW9uLWJ1YmJsZV9fY29udGVudFwiPlxuXHRcdFx0XHQ8IS0tIEF2YXRhciBvciBpY29uIC0tPlxuXHRcdFx0XHQ8c3BhbiA6Y2xhc3M9XCJbaWNvbiwgYG1lbnRpb24tYnViYmxlX19pY29uLS0ke2F2YXRhclVybCA/ICd3aXRoLWF2YXRhcicgOiAnJ31gXVwiXG5cdFx0XHRcdFx0OnN0eWxlPVwiYXZhdGFyVXJsID8geyBiYWNrZ3JvdW5kSW1hZ2U6IGB1cmwoJHthdmF0YXJVcmx9KWAgfSA6IG51bGxcIlxuXHRcdFx0XHRcdGNsYXNzPVwibWVudGlvbi1idWJibGVfX2ljb25cIiAvPlxuXG5cdFx0XHRcdDwhLS0gVGl0bGUgLS0+XG5cdFx0XHRcdDxzcGFuIHJvbGU9XCJoZWFkaW5nXCIgY2xhc3M9XCJtZW50aW9uLWJ1YmJsZV9fdGl0bGVcIiA6dGl0bGU9XCJsYWJlbFwiIC8+XG5cdFx0XHQ8L3NwYW4+XG5cblx0XHRcdDwhLS0gU2VsZWN0YWJsZSB0ZXh0IGZvciBjb3B5L3Bhc3RlIC0tPlxuXHRcdFx0PHNwYW4gcm9sZT1cIm5vbmVcIiBjbGFzcz1cIm1lbnRpb24tYnViYmxlX19zZWxlY3RcIj57eyBtZW50aW9uVGV4dCB9fTwvc3Bhbj5cblx0XHQ8L3NwYW4+XG5cdDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBnZW5lcmF0ZVVybCB9IGZyb20gJ0BuZXh0Y2xvdWQvcm91dGVyJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICdNZW50aW9uQnViYmxlJyxcblxuXHRwcm9wczoge1xuXHRcdGlkOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHR9LFxuXHRcdGxhYmVsOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHR9LFxuXHRcdGljb246IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdH0sXG5cdFx0c291cmNlOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHR9LFxuXHRcdHByaW1hcnk6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHR9LFxuXHRjb21wdXRlZDoge1xuXHRcdGF2YXRhclVybCgpIHtcblx0XHRcdHJldHVybiB0aGlzLmlkICYmIHRoaXMuc291cmNlID09PSAndXNlcnMnXG5cdFx0XHRcdD8gdGhpcy5nZXRBdmF0YXJVcmwodGhpcy5pZCwgNDQpXG5cdFx0XHRcdDogbnVsbFxuXHRcdH0sXG5cdFx0bWVudGlvblRleHQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pZC5pbmRleE9mKCcgJykgPT09IC0xXG5cdFx0XHRcdD8gYEAke3RoaXMuaWR9YFxuXHRcdFx0XHQ6IGBAXCIke3RoaXMuaWR9XCJgXG5cdFx0fSxcblx0fSxcblxuXHRtZXRob2RzOiB7XG5cdFx0Z2V0QXZhdGFyVXJsKHVzZXIsIHNpemUpIHtcblx0XHRcdHJldHVybiBnZW5lcmF0ZVVybCgnL2F2YXRhci97dXNlcn0ve3NpemV9Jywge1xuXHRcdFx0XHR1c2VyLFxuXHRcdFx0XHRzaXplLFxuXHRcdFx0fSlcblx0XHR9LFxuXHR9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbiRidWJibGUtaGVpZ2h0OiAyMHB4O1xuJGJ1YmJsZS1tYXgtd2lkdGg6IDE1MHB4O1xuJGJ1YmJsZS1wYWRkaW5nOiAycHg7XG4kYnViYmxlLWF2YXRhci1zaXplOiAkYnViYmxlLWhlaWdodCAtIDIgKiAkYnViYmxlLXBhZGRpbmc7XG5cbi5tZW50aW9uLWJ1YmJsZSB7XG5cdCYtLXByaW1hcnkgJl9fY29udGVudCB7XG5cdFx0Y29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50KTtcblx0fVxuXG5cdCZfX3dyYXBwZXIge1xuXHRcdG1heC13aWR0aDogJGJ1YmJsZS1tYXgtd2lkdGg7XG5cdFx0Ly8gQWxpZ24gd2l0aCB0ZXh0XG5cdFx0aGVpZ2h0OiAkYnViYmxlLWhlaWdodCAtICRidWJibGUtcGFkZGluZztcblx0XHR2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXG5cdCZfX2NvbnRlbnQge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAkYnViYmxlLWhlaWdodCA7XG5cdFx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcblx0XHR1c2VyLXNlbGVjdDogbm9uZTtcblx0XHRwYWRkaW5nLXJpZ2h0OiAkYnViYmxlLXBhZGRpbmcgKiAzO1xuXHRcdHBhZGRpbmctbGVmdDogJGJ1YmJsZS1wYWRkaW5nO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRidWJibGUtaGVpZ2h0IC8gMjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmspO1xuXHR9XG5cblx0Jl9faWNvbiB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOiAkYnViYmxlLWF2YXRhci1zaXplO1xuXHRcdGhlaWdodDogJGJ1YmJsZS1hdmF0YXItc2l6ZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYnViYmxlLWF2YXRhci1zaXplIC8gMjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmtlcik7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZC1zaXplOiAkYnViYmxlLWF2YXRhci1zaXplIC0gMiAqICRidWJibGUtcGFkZGluZztcblxuXHRcdCYtLXdpdGgtYXZhdGFyIHtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0XHR9XG5cdH1cblxuXHQmX190aXRsZSB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRtYXJnaW4tbGVmdDogJGJ1YmJsZS1wYWRkaW5nO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0Ly8gUHV0IGxhYmVsIGluIDo6YmVmb3JlIHNvIGl0IGlzIG5vdCBzZWxlY3RhYmxlXG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6IGF0dHIodGl0bGUpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEhpZGUgdGhlIG1lbnRpb24gaWQgc28gaXQgaXMgc2VsZWN0YWJsZVxuXHQmX19zZWxlY3Qge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR6LWluZGV4OiAtMTtcblx0XHRsZWZ0OiAtMTAwMHB4O1xuXHR9XG59XG5cbjwvc3R5bGU+XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSB7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAvKiBvdmVycmlkZSB0aGlzIHJ1bGUgd2l0aCB5b3VyIHdpZHRoIHN0eWxpbmcgaWYgeW91IG5lZWQgKi9cXG4gIG1pbi13aWR0aDogMTYwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcbiAgLyogRm9yY2Ugc2luZ2xlIG11bHRpc2VsZWN0IHZhbHVlIHRvIGJlIHNob3duIHdoZW4gbm90IGFjdGl2ZSAqL1xcbiAgLyogcmVzdWx0cyB3cmFwcGVyICovXFxuICAvKiBBQk9WRSBkaXNwbGF5ICovXFxuICAvKiBJY29uIGJlZm9yZSBvcHRpb24gc2VsZWN0ICovXFxuICAvKiBObyBuZWVkIGZvciBhbiBpY29uIGhlcmUgKi9cXG4gIC8qIE1vdXNlIGZlZWRiYWNrICovIH1cXG4gIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl06bm90KC5tdWx0aXNlbGVjdC0tYWN0aXZlKSAubXVsdGlzZWxlY3RfX3NpbmdsZSB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICB6LWluZGV4OiAyICFpbXBvcnRhbnQ7IH1cXG4gIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0ubXVsdGlzZWxlY3QtLWFjdGl2ZSB7XFxuICAgIC8qIE9wZW5lZDogZm9yY2UgZGlzcGxheSB0aGUgaW5wdXQgKi9cXG4gICAgLyogbXVsdGlzZWxlY3RfX2xpbWl0IGhpZGRlbiBpZiBhY3RpdmUgKi8gfVxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLm11bHRpc2VsZWN0LS1hY3RpdmUgaW5wdXQubXVsdGlzZWxlY3RfX2lucHV0IHtcXG4gICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICAgICAgY3Vyc29yOiB0ZXh0ICFpbXBvcnRhbnQ7XFxuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgdmFyKC0tYm9yZGVyLXJhZGl1cykgMCAwO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cXG4gICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXS5tdWx0aXNlbGVjdC0tYWN0aXZlIC5tdWx0aXNlbGVjdF9fbGltaXQge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0ubXVsdGlzZWxlY3QtLWFjdGl2ZS5tdWx0aXNlbGVjdC0tYWJvdmUgaW5wdXQubXVsdGlzZWxlY3RfX2lucHV0IHtcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpOyB9XFxuICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLm11bHRpc2VsZWN0LS1kaXNhYmxlZCxcXG4gIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0ubXVsdGlzZWxlY3QtLWRpc2FibGVkIC5tdWx0aXNlbGVjdF9fc2luZ2xlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrKSAhaW1wb3J0YW50OyB9XFxuICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLmljb24tbG9hZGluZy1zbWFsbDo6YWZ0ZXIge1xcbiAgICBsZWZ0OiAxMDAlO1xcbiAgICBtYXJnaW4tbGVmdDogLTI0cHg7IH1cXG4gIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X190YWdzIHtcXG4gICAgLyogc3BhY2UgYmV0d2VlbiB0YWdzIGFuZCBsaW1pdCB0YWcgKi9cXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC13cmFwOiBub3dyYXA7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlci1kYXJrKTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gICAgbWluLWhlaWdodDogMzRweDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAvKiB0YWcgd3JhcHBlciAqL1xcbiAgICAvKiBTaW5nbGUgc2VsZWN0IGRlZmF1bHQgdmFsdWVcXG5cXHRcXHRvciBkZWZhdWx0IHBsYWNlaG9sZGVyIGlmIHNlYXJjaCBkaXNhYmxlZCovXFxuICAgIC8qIGRpc3BsYXllZCB0ZXh0IGlmIHRhZyBsaW1pdCByZWFjaGVkICovXFxuICAgIC8qIGRlZmF1bHQgbXVsdGlzZWxlY3QgaW5wdXQgZm9yIHNlYXJjaCBhbmQgcGxhY2Vob2xkZXIgKi8gfVxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fdGFncyAubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcCB7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgcGFkZGluZzogM3B4IDVweDtcXG4gICAgICBmbGV4OiAxIDE7XFxuICAgICAgZmxleC13cmFwOiBub3dyYXA7XFxuICAgICAgLyogbm8gdGFncyBvciBzaW1wbGUgc2VsZWN0PyBTaG93IGlucHV0IGRpcmVjdGx5XFxuXFx0XFx0XFx0aW5wdXQgaXMgdXNlZCB0byBkaXNwbGF5IHNpbmdsZSB2YWx1ZSAqL1xcbiAgICAgIC8qIHNlbGVjdGVkIHRhZyAqLyB9XFxuICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX3RhZ3MgLm11bHRpc2VsZWN0X190YWdzLXdyYXA6ZW1wdHkgfiBpbnB1dC5tdWx0aXNlbGVjdF9faW5wdXQge1xcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG4gICAgICAgIC8qIGhpZGUgZGVmYXVsdCBlbXB0eSB0ZXh0IGxpa2UgLm11bHRpc2VsZWN0X19wbGFjZWhvbGRlcixcXG5cXHRcXHRcXHRcXHRhbmQgc2hvdyBpbnB1dCBpbnN0ZWFkLiBJdCBsb29rcyBiZXR0ZXIgd2l0aG91dCBhIHRyYW5zaXRpb24gYmV0d2VlblxcblxcdFxcdFxcdFxcdGEgc3BhbiBhbmQgdGhlIGlucHV0IHRoYXQgaGF2ZSBkaWZmZXJlbnQgc3R5bGluZyAqLyB9XFxuICAgICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fdGFncyAubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcDplbXB0eSB+IGlucHV0Lm11bHRpc2VsZWN0X19pbnB1dCArIHNwYW46bm90KC5tdWx0aXNlbGVjdF9fc2luZ2xlKSB7XFxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IH1cXG4gICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fdGFncyAubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcCAubXVsdGlzZWxlY3RfX3RhZyB7XFxuICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICAgIHBhZGRpbmc6IDFweCA1cHg7XFxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcbiAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItZGFyayk7XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICAgICAgICAvKiByZXF1aXJlIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHdpZHRoXFxuXFx0XFx0XFx0XFx0YW5kIGZvcmNlIHRoZSB0YWcgdG8gc2hyaW5nIHByb3Blcmx5ICovXFxuICAgICAgICBtaW4td2lkdGg6IDA7XFxuICAgICAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50O1xcbiAgICAgICAgbWF4LXdpZHRoOiAtbW96LWZpdC1jb250ZW50O1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4O1xcbiAgICAgICAgLyogY3NzIGhhY2ssIGRldGVjdCBpZiBtb3JlIHRoYW4gdHdvIHRhZ3NcXG5cXHRcXHRcXHRcXHRpZiBzbywgZmxleC1iYXNpcyBpcyBzZXQgdG8gaGFsZiAqL1xcbiAgICAgICAgLyogZWxsaXBzaXMgdGhlIGdyb3VwcyB0byBiZSBzdXJlXFxuXFx0XFx0XFx0XFx0d2UgZGlzcGxheSBhdCBsZWFzdCB0d28gb2YgdGhlbSAqLyB9XFxuICAgICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fdGFncyAubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcCAubXVsdGlzZWxlY3RfX3RhZzpvbmx5LWNoaWxkIHtcXG4gICAgICAgICAgZmxleDogMCAxIGF1dG87IH1cXG4gICAgICAgIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X190YWdzIC5tdWx0aXNlbGVjdF9fdGFncy13cmFwIC5tdWx0aXNlbGVjdF9fdGFnOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfVxcbiAgICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX3RhZ3MgLm11bHRpc2VsZWN0X190YWdzLXdyYXAgLm11bHRpc2VsZWN0X190YWcgPiBzcGFuIHtcXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47IH1cXG4gICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX3RhZ3MgLm11bHRpc2VsZWN0X19zaW5nbGUsXFxuICAgIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X190YWdzIC5tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIge1xcbiAgICAgIHBhZGRpbmc6IDdweCA2cHg7XFxuICAgICAgZmxleDogMCAwIDEwMCU7XFxuICAgICAgei1pbmRleDogMTtcXG4gICAgICAvKiBhYm92ZSBpbnB1dCAqL1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbGlnaHRlcik7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XFxuICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX3RhZ3MgLm11bHRpc2VsZWN0X19zaW5nbGUsIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X190YWdzIC5tdWx0aXNlbGVjdF9fc2luZ2xlICosXFxuICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX3RhZ3MgLm11bHRpc2VsZWN0X19wbGFjZWhvbGRlcixcXG4gICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fdGFncyAubXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyICoge1xcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAgIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X190YWdzIC5tdWx0aXNlbGVjdF9fc3Ryb25nLFxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fdGFncyAubXVsdGlzZWxlY3RfX2xpbWl0IHtcXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1saWdodGVyKTtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIG9wYWNpdHk6IDAuNztcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgICAvKiBhYm92ZSB0aGUgaW5wdXQgKi9cXG4gICAgICB6LWluZGV4OiA1OyB9XFxuICAgIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X190YWdzIGlucHV0Lm11bHRpc2VsZWN0X19pbnB1dCB7XFxuICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgICAvKiBsZXQncyBsZWF2ZSBpdCBvbiB0b3Agb2YgdGFncyBidXQgaGlkZSBpdCAqL1xcbiAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG4gICAgICAvKiBvdmVycmlkZSBoaWRlIHRvIGZvcmNlIHNob3cgdGhlIHBsYWNlaG9sZGVyICovXFxuICAgICAgLyogb25seSB3aGVuIG5vdCBhY3RpdmUgKi9cXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgLyogb3ZlcnJpZGUgaW5saW5lIHN0eWxpbmcgb2YgdGhlIGxpYiAqL1xcbiAgICAgIHBhZGRpbmc6IDdweCA2cHggIWltcG9ydGFudDtcXG4gICAgICBkaXNwbGF5OiBub25lOyB9XFxuICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbWFyZ2luLXRvcDogLTFweDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWRhcmspO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcbiAgICB6LWluZGV4OiA1MDtcXG4gICAgbWF4LWhlaWdodDogMjUwcHg7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKTsgfVxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIC5tdWx0aXNlbGVjdF9fY29udGVudCB7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgcGFkZGluZzogMDsgfVxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIGxpIHtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSxcXG4gICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIGxpIHNwYW4ge1xcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSA+IHNwYW4ge1xcbiAgICAgICAgcGFkZGluZzogOHB4O1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgIGhlaWdodDogYXV0bztcXG4gICAgICAgIG1pbi1oZWlnaHQ6IDFlbTtcXG4gICAgICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcXG4gICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWxpZ2h0ZXIpO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICAvKiBzZWxlY3RlZCBjaGVja21hcmsgaWNvbiAqLyB9XFxuICAgICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIGxpID4gc3Bhbjo6YmVmb3JlIHtcXG4gICAgICAgICAgY29udGVudDogJyAnO1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxuICAgICAgICAgIG1pbi13aWR0aDogMTZweDtcXG4gICAgICAgICAgbWluLWhlaWdodDogMTZweDtcXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxcbiAgICAgICAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSA+IHNwYW4ubXVsdGlzZWxlY3RfX29wdGlvbi0tZGlzYWJsZWQge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmspO1xcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7IH1cXG4gICAgICAgIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X19jb250ZW50LXdyYXBwZXIgbGkgPiBzcGFuLm11bHRpc2VsZWN0X19vcHRpb24tLWhpZ2hsaWdodCB7XFxuICAgICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmspOyB9XFxuICAgICAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIGxpID4gc3Bhbjpub3QoLm11bHRpc2VsZWN0X19vcHRpb24tLWRpc2FibGVkKTpob3Zlcjo6YmVmb3JlIHtcXG4gICAgICAgICAgb3BhY2l0eTogLjM7IH1cXG4gICAgICAgIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X19jb250ZW50LXdyYXBwZXIgbGkgPiBzcGFuLm11bHRpc2VsZWN0X19vcHRpb24tLXNlbGVjdGVkOjpiZWZvcmUsIC5tdWx0aXNlbGVjdFtkYXRhLXYtODRjNDYxZl0gLm11bHRpc2VsZWN0X19jb250ZW50LXdyYXBwZXIgbGkgPiBzcGFuOm5vdCgubXVsdGlzZWxlY3RfX29wdGlvbi0tZGlzYWJsZWQpOmhvdmVyOjpiZWZvcmUge1xcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9XFxuICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLm11bHRpc2VsZWN0LS1hYm92ZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciB7XFxuICAgIGJvdHRvbTogMTAwJTtcXG4gICAgbWFyZ2luLWJvdHRvbTogLTFweDsgfVxcbiAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXS5tdWx0aXNlbGVjdC0tbXVsdGlwbGUgLm11bHRpc2VsZWN0X190YWdzIHtcXG4gICAgZmxleC13cmFwOiB3cmFwOyB9XFxuICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLm11bHRpc2VsZWN0LS1tdWx0aXBsZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSA+IHNwYW4ge1xcbiAgICAvKiBhZGQgdGhlIHByb3AgdGFnLXBsYWNlaG9sZGVyPVxcXCJjcmVhdGVcXFwiIHRvIGFkZCB0aGUgK1xcblxcdFxcdFxcdGljb24gb24gdG9wIG9mIGFuIHVua25vd24tYW5kLXJlYWR5LXRvLWJlLWNyZWF0ZWQgZW50cnkgKi8gfVxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLm11bHRpc2VsZWN0LS1tdWx0aXBsZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSA+IHNwYW46OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0taWNvbi1jaGVja21hcmstMDAwKTsgfVxcbiAgICAubXVsdGlzZWxlY3RbZGF0YS12LTg0YzQ2MWZdLm11bHRpc2VsZWN0LS1tdWx0aXBsZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSA+IHNwYW5bZGF0YS1zZWxlY3Q9J2NyZWF0ZSddOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWljb24tYWRkLTAwMCk7XFxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsgfVxcbiAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXS5tdWx0aXNlbGVjdC0tc2luZ2xlIC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIGxpID4gc3Bhbjo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogbm9uZTsgfVxcbiAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXTpob3ZlciAubXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyLFxcbiAgLm11bHRpc2VsZWN0W2RhdGEtdi04NGM0NjFmXSBpbnB1dC5tdWx0aXNlbGVjdF9faW5wdXQgLm11bHRpc2VsZWN0X19wbGFjZWhvbGRlciB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpOyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vaW5kZXguc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RURxQkU7QUFqQkY7RUFDQyxTQUFTO0VBQ1QscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQiwyREFBQTtFQUNBLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsOENBQThDO0VBRTlDLCtEQUFBO0VBa0tBLG9CQUFBO0VBMEVBLGtCQUFBO0VBTUEsOEJBQUE7RUF1QkEsNkJBQUE7RUFLQSxtQkFBQSxFQUFvQjtFQXZSckI7SUFXRSxXQUFXO0lBQ1gscUJBQXFCLEVBQUE7RUFadkI7SUFrQkUsb0NBQUE7SUFTQSx3Q0FBQSxFQUF5QztJQTNCM0M7TUFvQkcscUJBQWlDO01BQ2pDLHVCQUF1QjtNQUV2Qiw0REFBNEQ7TUFDNUQseUJBQXlCLEVBQUE7SUF4QjVCO01BNkJHLGFBQWEsRUFBQTtFQTdCaEI7SUFvQ0csNERBQTRELEVBQUE7RUFwQy9EOztJQTJDRSx5REFBeUQsRUFBQTtFQTNDM0Q7SUFnREUsVUFBVTtJQUNWLGtCQUFrQixFQUFBO0VBakRwQjtJQXNERSxxQ0FBQTtJQUVBLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLDBDQUEwQztJQUMxQyxl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O0lBK1BHLGVBQWUsRUFBQTtFQS9QbEI7SUF1UUc7NERBekN5RCxFQTBDQztJQXhRN0Q7TUFvUUksMkNBQTJDLEVBQUE7SUFwUS9DO01BMlFLLHFDQUFxQztNQUNyQyxtQkFBbUIsRUFBQTtFQTVReEI7SUFvUkUsYUFBYSxFQUFBO0VBcFJmOztJQTJSRyw2QkFBNkIsRUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIkc2NvcGVfdmVyc2lvbjpcXFwiODRjNDYxZlxcXCI7IEBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuLy8gc2NvcGluZyBpcyBub3Qgd29ya2luZyBpbnNpZGUgdGhlIE11bHRpc2VsZWN0LnZ1ZSBjb21wb25lbnRcXG4vLyBhcyB0aGUgbmVzdGVkIHByb3BlcnRpZXMgYXJlIG5vdCBpbnNpZGUgaXRcXG4vLyBUaGVyZWZvcmUgd2UgbmVlZCB0byB1c2UgYW4gZXh0ZXJuYWwgc2NvcGluZ1xcbi5tdWx0aXNlbGVjdFtkYXRhLXYtI3skc2NvcGVfdmVyc2lvbn1dIHtcXG5cXHRtYXJnaW46IDA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG5cXHQvKiBvdmVycmlkZSB0aGlzIHJ1bGUgd2l0aCB5b3VyIHdpZHRoIHN0eWxpbmcgaWYgeW91IG5lZWQgKi9cXG5cXHRtaW4td2lkdGg6IDE2MHB4O1xcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcblxcblxcdC8qIEZvcmNlIHNpbmdsZSBtdWx0aXNlbGVjdCB2YWx1ZSB0byBiZSBzaG93biB3aGVuIG5vdCBhY3RpdmUgKi9cXG5cXHQmOm5vdCgubXVsdGlzZWxlY3QtLWFjdGl2ZSkgLm11bHRpc2VsZWN0X19zaW5nbGUge1xcblxcdFxcdHdpZHRoOiAxMDAlO1xcblxcdFxcdHotaW5kZXg6IDIgIWltcG9ydGFudDtcXG5cXHR9XFxuXFxuXFx0Ly8gYWN0aXZlIHN0YXRlLCBmb3JjZSB0aGUgaW5wdXQgdG8gYmUgc2hvd24sIHdlIGRvbid0IHdhbnRcXG5cXHQvLyB0aGUgcGxhY2Vob2xkZXIgb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25zXFxuXFx0Ji5tdWx0aXNlbGVjdC0tYWN0aXZlIHtcXG5cXHRcXHQvKiBPcGVuZWQ6IGZvcmNlIGRpc3BsYXkgdGhlIGlucHV0ICovXFxuXFx0XFx0aW5wdXQubXVsdGlzZWxlY3RfX2lucHV0IHtcXG5cXHRcXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Y3Vyc29yOiB0ZXh0ICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ly8gcmVtb3ZlIGJvcmRlciByYWRpdXMgb24gYm90dG9tIG9wZW5pbmdcXG5cXHRcXHRcXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKSAwIDA7XFxuXFx0XFx0XFx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0LyogbXVsdGlzZWxlY3RfX2xpbWl0IGhpZGRlbiBpZiBhY3RpdmUgKi9cXG5cXHRcXHQubXVsdGlzZWxlY3RfX2xpbWl0IHtcXG5cXHRcXHRcXHRkaXNwbGF5OiBub25lO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gUmVtb3ZlIHJhZGl1cyBvbiB0b3Agb3BlbmluZ1xcblxcdCYubXVsdGlzZWxlY3QtLWFjdGl2ZS5tdWx0aXNlbGVjdC0tYWJvdmUge1xcblxcdFxcdGlucHV0Lm11bHRpc2VsZWN0X19pbnB1dCB7XFxuXFx0XFx0XFx0Ym9yZGVyLXJhZGl1czogMCAwIHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gZGlzYWJsZWQgc3RhdGUgYmFja2dyb3VuZFxcblxcdCYubXVsdGlzZWxlY3QtLWRpc2FibGVkLFxcblxcdCYubXVsdGlzZWxlY3QtLWRpc2FibGVkIC5tdWx0aXNlbGVjdF9fc2luZ2xlIHtcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmspICFpbXBvcnRhbnQ7XFxuXFx0fVxcblxcblxcdC8vIGxvYWRpbmcgc3RhdGVcXG5cXHQmLmljb24tbG9hZGluZy1zbWFsbDo6YWZ0ZXIge1xcblxcdFxcdGxlZnQ6IDEwMCU7XFxuXFx0XFx0bWFyZ2luLWxlZnQ6IC0yNHB4O1xcblxcdH1cXG5cXG5cXHQvLyBtdWx0aXBsZSBzZWxlY3RlZCBvcHRpb25zIGRpc3BsYXlcXG5cXHQubXVsdGlzZWxlY3RfX3RhZ3Mge1xcblxcdFxcdC8qIHNwYWNlIGJldHdlZW4gdGFncyBhbmQgbGltaXQgdGFnICovXFxuXFx0XFx0JHNwYWNlLWJldHdlZW46IDVweDtcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdGZsZXgtd3JhcDogbm93cmFwO1xcblxcdFxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0XFx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWRhcmspO1xcblxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0XFx0Ym9yZGVyLXJhZGl1czogM3B4O1xcblxcdFxcdG1pbi1oZWlnaHQ6IDM0cHg7XFxuXFx0XFx0aGVpZ2h0OiAxMDAlO1xcblxcblxcdFxcdC8qIHRhZyB3cmFwcGVyICovXFxuXFx0XFx0Lm11bHRpc2VsZWN0X190YWdzLXdyYXAge1xcblxcdFxcdFxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0XFx0XFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XFxuXFx0XFx0XFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRcXHRcXHRtYXgtd2lkdGg6IDEwMCU7XFxuXFx0XFx0XFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdFxcdFxcdHBhZGRpbmc6IDNweCAkc3BhY2UtYmV0d2VlbjtcXG5cXHRcXHRcXHRmbGV4OiAxIDE7XFxuXFx0XFx0XFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0XFx0XFx0Lyogbm8gdGFncyBvciBzaW1wbGUgc2VsZWN0PyBTaG93IGlucHV0IGRpcmVjdGx5XFxuXFx0XFx0XFx0aW5wdXQgaXMgdXNlZCB0byBkaXNwbGF5IHNpbmdsZSB2YWx1ZSAqL1xcblxcdFxcdFxcdCY6ZW1wdHkgfiBpbnB1dC5tdWx0aXNlbGVjdF9faW5wdXQge1xcblxcdFxcdFxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Z1bGwgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRcXHRkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcblxcdFxcdFxcdFxcdC8qIGhpZGUgZGVmYXVsdCBlbXB0eSB0ZXh0IGxpa2UgLm11bHRpc2VsZWN0X19wbGFjZWhvbGRlcixcXG5cXHRcXHRcXHRcXHRhbmQgc2hvdyBpbnB1dCBpbnN0ZWFkLiBJdCBsb29rcyBiZXR0ZXIgd2l0aG91dCBhIHRyYW5zaXRpb24gYmV0d2VlblxcblxcdFxcdFxcdFxcdGEgc3BhbiBhbmQgdGhlIGlucHV0IHRoYXQgaGF2ZSBkaWZmZXJlbnQgc3R5bGluZyAqL1xcblxcdFxcdFxcdFxcdCsgc3Bhbjpub3QoLm11bHRpc2VsZWN0X19zaW5nbGUpIHtcXG5cXHRcXHRcXHRcXHRcXHRkaXNwbGF5OiBub25lO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0Lyogc2VsZWN0ZWQgdGFnICovXFxuXFx0XFx0XFx0Lm11bHRpc2VsZWN0X190YWcge1xcblxcdFxcdFxcdFxcdGxpbmUtaGVpZ2h0OiAyMHB4O1xcblxcdFxcdFxcdFxcdHBhZGRpbmc6IDFweCA1cHg7XFxuXFx0XFx0XFx0XFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcXG5cXHRcXHRcXHRcXHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcXG5cXHRcXHRcXHRcXHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItZGFyayk7XFxuXFx0XFx0XFx0XFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XFxuXFx0XFx0XFx0XFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRcXHRcXHRcXHRib3JkZXItcmFkaXVzOiAzcHg7XFxuXFx0XFx0XFx0XFx0LyogcmVxdWlyZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCB3aWR0aFxcblxcdFxcdFxcdFxcdGFuZCBmb3JjZSB0aGUgdGFnIHRvIHNocmluZyBwcm9wZXJseSAqL1xcblxcdFxcdFxcdFxcdG1pbi13aWR0aDogMDtcXG5cXHRcXHRcXHRcXHRtYXgtd2lkdGg6IGZpdC1jb250ZW50O1xcblxcdFxcdFxcdFxcdG1heC13aWR0aDogLW1vei1maXQtY29udGVudDtcXG5cXHRcXHRcXHRcXHRtYXJnaW4tYm90dG9tOiAzcHg7XFxuXFx0XFx0XFx0XFx0LyogY3NzIGhhY2ssIGRldGVjdCBpZiBtb3JlIHRoYW4gdHdvIHRhZ3NcXG5cXHRcXHRcXHRcXHRpZiBzbywgZmxleC1iYXNpcyBpcyBzZXQgdG8gaGFsZiAqL1xcblxcdFxcdFxcdFxcdCY6b25seS1jaGlsZCB7XFxuXFx0XFx0XFx0XFx0XFx0ZmxleDogMCAxIGF1dG87XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdCY6bm90KDpsYXN0LWNoaWxkKSB7XFxuXFx0XFx0XFx0XFx0XFx0bWFyZ2luLXJpZ2h0OiAkc3BhY2UtYmV0d2VlbjtcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0LyogZWxsaXBzaXMgdGhlIGdyb3VwcyB0byBiZSBzdXJlXFxuXFx0XFx0XFx0XFx0d2UgZGlzcGxheSBhdCBsZWFzdCB0d28gb2YgdGhlbSAqL1xcblxcdFxcdFxcdFxcdD4gc3BhbiB7XFxuXFx0XFx0XFx0XFx0XFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcXHRcXHRcXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHRcXHRcXHRcXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdFxcdC8qIFNpbmdsZSBzZWxlY3QgZGVmYXVsdCB2YWx1ZVxcblxcdFxcdG9yIGRlZmF1bHQgcGxhY2Vob2xkZXIgaWYgc2VhcmNoIGRpc2FibGVkKi9cXG5cXHRcXHQubXVsdGlzZWxlY3RfX3NpbmdsZSxcXG5cXHRcXHQubXVsdGlzZWxlY3RfX3BsYWNlaG9sZGVyIHtcXG5cXHRcXHRcXHRwYWRkaW5nOiA3cHggNnB4OyAvLyBsaWtlIHRoZSBpbnB1dFxcblxcdFxcdFxcdGZsZXg6IDAgMCAxMDAlO1xcblxcdFxcdFxcdHotaW5kZXg6IDE7IC8qIGFib3ZlIGlucHV0ICovXFxuXFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG5cXHRcXHRcXHRsaW5lLWhlaWdodDogMThweDsgLy8gMzJweCAtIDIqNnB4IChwYWRkaW5nKSAtIDIqMXB4IChib3JkZXIpXFxuXFx0XFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtbGlnaHRlcik7IC8vIGxpa2UgdGhlIGlucHV0XFxuXFx0XFx0XFx0Ly8gQWxpZ24gY29udGVudCBhbmQgbWFrZSB0aGUgZmxvdyBzbW9vdGhlclxcblxcdFxcdFxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0XFx0XFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG5cXHRcXHRcXHQvLyBBbnl0aGluZyBpbnNpZGUgd2lsbCB0cmlnZ2VyIHRoZSBzZWxlY3Qgb3BlbmluZ1xcblxcdFxcdFxcdCYsICoge1xcblxcdFxcdFxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdFxcdC8qIGRpc3BsYXllZCB0ZXh0IGlmIHRhZyBsaW1pdCByZWFjaGVkICovXFxuXFx0XFx0Lm11bHRpc2VsZWN0X19zdHJvbmcsXFxuXFx0XFx0Lm11bHRpc2VsZWN0X19saW1pdCB7XFxuXFx0XFx0XFx0bGluZS1oZWlnaHQ6IDIwcHg7XFxuXFx0XFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtbGlnaHRlcik7XFxuXFx0XFx0XFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XFxuXFx0XFx0XFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRcXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9ub3JtYWw7XFxuXFx0XFx0XFx0bWFyZ2luLXJpZ2h0OiAkc3BhY2UtYmV0d2VlbjtcXG5cXHRcXHRcXHQvKiBhYm92ZSB0aGUgaW5wdXQgKi9cXG5cXHRcXHRcXHR6LWluZGV4OiA1O1xcblxcdFxcdH1cXG5cXHRcXHQvKiBkZWZhdWx0IG11bHRpc2VsZWN0IGlucHV0IGZvciBzZWFyY2ggYW5kIHBsYWNlaG9sZGVyICovXFxuXFx0XFx0aW5wdXQubXVsdGlzZWxlY3RfX2lucHV0IHtcXG5cXHRcXHRcXHR3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xcblxcdFxcdFxcdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xcblxcdFxcdFxcdG1hcmdpbjogMDtcXG5cXHRcXHRcXHRvcGFjaXR5OiAwO1xcblxcdFxcdFxcdC8qIGxldCdzIGxlYXZlIGl0IG9uIHRvcCBvZiB0YWdzIGJ1dCBoaWRlIGl0ICovXFxuXFx0XFx0XFx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyOiBub25lO1xcblxcdFxcdFxcdC8qIG92ZXJyaWRlIGhpZGUgdG8gZm9yY2Ugc2hvdyB0aGUgcGxhY2Vob2xkZXIgKi9cXG5cXHRcXHRcXHQvKiBvbmx5IHdoZW4gbm90IGFjdGl2ZSAqL1xcblxcdFxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRcXHQvKiBvdmVycmlkZSBpbmxpbmUgc3R5bGluZyBvZiB0aGUgbGliICovXFxuXFx0XFx0XFx0cGFkZGluZzogN3B4IDZweCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdGRpc3BsYXk6IG5vbmU7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQvKiByZXN1bHRzIHdyYXBwZXIgKi9cXG5cXHQubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciB7XFxuXFx0XFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdFxcdHdpZHRoOiAxMDAlO1xcblxcdFxcdG1hcmdpbi10b3A6IC0xcHg7XFxuXFx0XFx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWRhcmspO1xcblxcdFxcdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0XFx0ei1pbmRleDogNTA7XFxuXFx0XFx0bWF4LWhlaWdodDogMjUwcHg7XFxuXFx0XFx0b3ZlcmZsb3cteTogYXV0bztcXG5cXHRcXHRib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tYm9yZGVyLXJhZGl1cykgdmFyKC0tYm9yZGVyLXJhZGl1cyk7XFxuXFx0XFx0Lm11bHRpc2VsZWN0X19jb250ZW50IHtcXG5cXHRcXHRcXHR3aWR0aDogMTAwJTtcXG5cXHRcXHRcXHRwYWRkaW5nOiAwO1xcblxcdFxcdH1cXG5cXHRcXHRsaSB7XFxuXFx0XFx0XFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdFxcdFxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0XFx0XFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHRcXHQmLFxcblxcdFxcdFxcdHNwYW4ge1xcblxcdFxcdFxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0PiBzcGFuIHtcXG5cXHRcXHRcXHRcXHRwYWRkaW5nOiA4cHg7XFxuXFx0XFx0XFx0XFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcXHRcXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdFxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdFxcdFxcdFxcdG1hcmdpbjogMDtcXG5cXHRcXHRcXHRcXHRoZWlnaHQ6IGF1dG87XFxuXFx0XFx0XFx0XFx0bWluLWhlaWdodDogMWVtO1xcblxcdFxcdFxcdFxcdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcXG5cXHRcXHRcXHRcXHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcblxcdFxcdFxcdFxcdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0XFx0XFx0XFx0LW1zLXVzZXItc2VsZWN0OiBub25lO1xcblxcdFxcdFxcdFxcdHVzZXItc2VsZWN0OiBub25lO1xcblxcdFxcdFxcdFxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcblxcdFxcdFxcdFxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0XFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtbGlnaHRlcik7XFxuXFx0XFx0XFx0XFx0d2lkdGg6IDEwMCU7XFxuXFx0XFx0XFx0XFx0Lyogc2VsZWN0ZWQgY2hlY2ttYXJrIGljb24gKi9cXG5cXHRcXHRcXHRcXHQmOjpiZWZvcmUge1xcblxcdFxcdFxcdFxcdFxcdGNvbnRlbnQ6ICcgJztcXG5cXHRcXHRcXHRcXHRcXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcblxcdFxcdFxcdFxcdFxcdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG5cXHRcXHRcXHRcXHRcXHRtaW4td2lkdGg6IDE2cHg7XFxuXFx0XFx0XFx0XFx0XFx0bWluLWhlaWdodDogMTZweDtcXG5cXHRcXHRcXHRcXHRcXHRkaXNwbGF5OiBibG9jaztcXG5cXHRcXHRcXHRcXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9kaXNhYmxlZDtcXG5cXHRcXHRcXHRcXHRcXHRtYXJnaW4tcmlnaHQ6IDVweDtcXG5cXHRcXHRcXHRcXHRcXHR2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdCYubXVsdGlzZWxlY3RfX29wdGlvbi0tZGlzYWJsZWQge1xcblxcdFxcdFxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFyayk7XFxuXFx0XFx0XFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZGlzYWJsZWQ7XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdCYubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0IHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcXG5cXHRcXHRcXHRcXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmspO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHQmOm5vdCgubXVsdGlzZWxlY3RfX29wdGlvbi0tZGlzYWJsZWQpOmhvdmVyOjpiZWZvcmUge1xcblxcdFxcdFxcdFxcdFxcdG9wYWNpdHk6IC4zO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHQmLm11bHRpc2VsZWN0X19vcHRpb24tLXNlbGVjdGVkLFxcblxcdFxcdFxcdFxcdCY6bm90KC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1kaXNhYmxlZCk6aG92ZXIge1xcblxcdFxcdFxcdFxcdFxcdCY6OmJlZm9yZSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0fVxcblxcdC8qIEFCT1ZFIGRpc3BsYXkgKi9cXG5cXHQmLm11bHRpc2VsZWN0LS1hYm92ZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciB7XFxuXFx0XFx0Ym90dG9tOiAxMDAlO1xcblxcdFxcdG1hcmdpbi1ib3R0b206IC0xcHg7XFxuXFx0fVxcblxcblxcdC8qIEljb24gYmVmb3JlIG9wdGlvbiBzZWxlY3QgKi9cXG5cXHQmLm11bHRpc2VsZWN0LS1tdWx0aXBsZSB7XFxuXFx0XFx0Ly8gcHVzaCB0aGUgaW5wdXQgYWZ0ZXIgdGhlIHRhZyBsaXN0XFxuXFx0XFx0Lm11bHRpc2VsZWN0X190YWdzIHtcXG5cXHRcXHRcXHRmbGV4LXdyYXA6IHdyYXA7XFxuXFx0XFx0fVxcblxcblxcdFxcdC5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIGxpID4gc3BhbiB7XFxuXFx0XFx0XFx0Jjo6YmVmb3JlIHtcXG5cXHRcXHRcXHRcXHRiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1pY29uLWNoZWNrbWFyay0wMDApO1xcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvKiBhZGQgdGhlIHByb3AgdGFnLXBsYWNlaG9sZGVyPVxcXCJjcmVhdGVcXFwiIHRvIGFkZCB0aGUgK1xcblxcdFxcdFxcdGljb24gb24gdG9wIG9mIGFuIHVua25vd24tYW5kLXJlYWR5LXRvLWJlLWNyZWF0ZWQgZW50cnkgKi9cXG5cXHRcXHRcXHQmW2RhdGEtc2VsZWN0PSdjcmVhdGUnXSB7XFxuXFx0XFx0XFx0XFx0Jjo6YmVmb3JlIHtcXG5cXHRcXHRcXHRcXHRcXHRiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1pY29uLWFkZC0wMDApO1xcblxcdFxcdFxcdFxcdFxcdHZpc2liaWxpdHk6IHZpc2libGU7XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC8qIE5vIG5lZWQgZm9yIGFuIGljb24gaGVyZSAqL1xcblxcdCYubXVsdGlzZWxlY3QtLXNpbmdsZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciBsaSA+IHNwYW46OmJlZm9yZSB7XFxuXFx0XFx0ZGlzcGxheTogbm9uZTtcXG5cXHR9XFxuXFxuXFx0LyogTW91c2UgZmVlZGJhY2sgKi9cXG5cXHQmOmhvdmVyLFxcblxcdGlucHV0Lm11bHRpc2VsZWN0X19pbnB1dCB7XFxuXFx0XFx0Lm11bHRpc2VsZWN0X19wbGFjZWhvbGRlciB7XFxuXFx0XFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuXFx0XFx0fVxcblxcdH1cXG59XFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuLyoqXFxuKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiwgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIFJvYmluIEFwcGVsbWFuIDxyb2JpbkBpY2V3aW5kLm5sPlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIEphbi1DaHJpc3RvcGggQm9yY2hhcmR0IDxoZXlAamFuY2JvcmNoYXJkdC5uZXQ+XFxuKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiwgRXJpayBQZWxsaWtrYSA8ZXJpa0BwZWxsaWtrYS5vcmc+XFxuKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNSwgVmluY2VudCBQZXRyeSA8cHZpbmNlODFAb3duY2xvdWQuY29tPlxcbipcXG4qIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKVxcbiogQ29weXJpZ2h0IDIwMTEtMjAxNSBUd2l0dGVyLCBJbmMuXFxuKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxcbiovXFxuLnZ1ZS10b29sdGlwW2RhdGEtdi04NGM0NjFmXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDAwMDA7XFxuICByaWdodDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbjogMDtcXG4gIC8qIGRlZmF1bHQgdG8gdG9wICovXFxuICBtYXJnaW4tdG9wOiAtM3B4O1xcbiAgcGFkZGluZzogMTBweCAwO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgb3BhY2l0eTogMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjY7XFxuICBsaW5lLWJyZWFrOiBhdXRvO1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAxMHB4IHZhcigtLWNvbG9yLWJveC1zaGFkb3cpKTsgfVxcbiAgLnZ1ZS10b29sdGlwW2RhdGEtdi04NGM0NjFmXVt4LXBsYWNlbWVudF49J3RvcCddIC50b29sdGlwLWFycm93IHtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICBib3JkZXItd2lkdGg6IDEwcHggMTBweCAwIDEwcHg7XFxuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl1beC1wbGFjZW1lbnRePSdib3R0b20nXSAudG9vbHRpcC1hcnJvdyB7XFxuICAgIHRvcDogMDtcXG4gICAgbWFyZ2luLXRvcDogMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwIDEwcHggMTBweCAxMHB4O1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAudnVlLXRvb2x0aXBbZGF0YS12LTg0YzQ2MWZdW3gtcGxhY2VtZW50Xj0ncmlnaHQnXSAudG9vbHRpcC1hcnJvdyB7XFxuICAgIHJpZ2h0OiAxMDAlO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XFxuICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICBib3JkZXItd2lkdGg6IDEwcHggMTBweCAxMHB4IDA7XFxuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAudnVlLXRvb2x0aXBbZGF0YS12LTg0YzQ2MWZdW3gtcGxhY2VtZW50Xj0nbGVmdCddIC50b29sdGlwLWFycm93IHtcXG4gICAgbGVmdDogMTAwJTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgYm9yZGVyLXdpZHRoOiAxMHB4IDAgMTBweCAxMHB4O1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl1bYXJpYS1oaWRkZW49J3RydWUnXSB7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzLCB2aXNpYmlsaXR5IC4xNXM7XFxuICAgIG9wYWNpdHk6IDA7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl1bYXJpYS1oaWRkZW49J2ZhbHNlJ10ge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXM7XFxuICAgIG9wYWNpdHk6IDE7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl0gLnRvb2x0aXAtaW5uZXIge1xcbiAgICBtYXgtd2lkdGg6IDM1MHB4O1xcbiAgICBwYWRkaW5nOiA1cHggOHB4O1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTsgfVxcbiAgLnZ1ZS10b29sdGlwW2RhdGEtdi04NGM0NjFmXSAudG9vbHRpcC1hcnJvdyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTtcXG4gICAgd2lkdGg6IDA7XFxuICAgIGhlaWdodDogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7IH1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9pbmRleC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQXBCRjs7Ozs7Ozs7OztDQStCQztBQWpCRDtFQUNDLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsV0FBVztFQUNYLFVBQVU7RUFDVixjQUFjO0VBQ2QsU0FBUztFQUNULG1CQUFBO0VBQ0EsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixnQkFBZ0I7RUFFaEIsZ0JBQWdCO0VBQ2hCLHVEQUF1RCxFQUFBO0VBaEJ4RDtJQXFCRyxTQUFTO0lBQ1QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQiw4QkExQmU7SUEyQmYsK0JBQStCO0lBQy9CLGdDQUFnQztJQUNoQyw4QkFBOEIsRUFBQTtFQTNCakM7SUFrQ0csTUFBTTtJQUNOLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsOEJBdkNlO0lBd0NmLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsOEJBQThCLEVBQUE7RUF4Q2pDO0lBK0NHLFdBQVc7SUFDWCxlQUFlO0lBQ2YsY0FBYztJQUNkLDhCQUFzRDtJQUN0RCw2QkFBNkI7SUFDN0IsZ0NBQWdDO0lBQ2hDLDhCQUE4QixFQUFBO0VBckRqQztJQTRERyxVQUFVO0lBQ1YsZUFBZTtJQUNmLGNBQWM7SUFDZCw4QkFqRWU7SUFrRWYsNkJBQTZCO0lBQzdCLCtCQUErQjtJQUMvQixnQ0FBZ0MsRUFBQTtFQWxFbkM7SUF3RUUsa0JBQWtCO0lBQ2xCLHlDQUF5QztJQUN6QyxVQUFVLEVBQUE7RUExRVo7SUE2RUUsbUJBQW1CO0lBQ25CLHdCQUF3QjtJQUN4QixVQUFVLEVBQUE7RUEvRVo7SUFvRkUsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsNkJBQTZCO0lBQzdCLG1DQUFtQztJQUNuQyw4Q0FBOEMsRUFBQTtFQXpGaEQ7SUE4RkUsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixRQUFRO0lBQ1IsU0FBUztJQUNULFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIsMENBQTBDLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcbi8qKlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4qIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2LCBSb2JpbiBBcHBlbG1hbiA8cm9iaW5AaWNld2luZC5ubD5cXG4qIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2LCBKYW4tQ2hyaXN0b3BoIEJvcmNoYXJkdCA8aGV5QGphbmNib3JjaGFyZHQubmV0PlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIEVyaWsgUGVsbGlra2EgPGVyaWtAcGVsbGlra2Eub3JnPlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTUsIFZpbmNlbnQgUGV0cnkgPHB2aW5jZTgxQG93bmNsb3VkLmNvbT5cXG4qXFxuKiBCb290c3RyYXAgdjMuMy41IChodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbSlcXG4qIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxcbiogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcXG4qL1xcblxcbiRhcnJvdy13aWR0aDogMTBweDtcXG5cXG4udnVlLXRvb2x0aXBbZGF0YS12LSN7JHNjb3BlX3ZlcnNpb259XSB7XFxuXFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdHotaW5kZXg6IDEwMDAwMDtcXG5cXHRyaWdodDogYXV0bztcXG5cXHRsZWZ0OiBhdXRvO1xcblxcdGRpc3BsYXk6IGJsb2NrO1xcblxcdG1hcmdpbjogMDtcXG5cXHQvKiBkZWZhdWx0IHRvIHRvcCAqL1xcblxcdG1hcmdpbi10b3A6IC0zcHg7XFxuXFx0cGFkZGluZzogMTBweCAwO1xcblxcdHRleHQtYWxpZ246IGxlZnQ7XFxuXFx0dGV4dC1hbGlnbjogc3RhcnQ7XFxuXFx0b3BhY2l0eTogMDtcXG5cXHRsaW5lLWhlaWdodDogMS42O1xcblxcblxcdGxpbmUtYnJlYWs6IGF1dG87XFxuXFx0ZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAxMHB4IHZhcigtLWNvbG9yLWJveC1zaGFkb3cpKTtcXG5cXG5cXHQvLyBUT1BcXG5cXHQmW3gtcGxhY2VtZW50Xj0ndG9wJ10ge1xcblxcdFxcdC50b29sdGlwLWFycm93IHtcXG5cXHRcXHRcXHRib3R0b206IDA7XFxuXFx0XFx0XFx0bWFyZ2luLXRvcDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tYm90dG9tOiAwO1xcblxcdFxcdFxcdGJvcmRlci13aWR0aDogJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAwICRhcnJvdy13aWR0aDtcXG5cXHRcXHRcXHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdFxcdGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdFxcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC8vIEJPVFRPTVxcblxcdCZbeC1wbGFjZW1lbnRePSdib3R0b20nXSB7XFxuXFx0XFx0LnRvb2x0aXAtYXJyb3cge1xcblxcdFxcdFxcdHRvcDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tdG9wOiAwO1xcblxcdFxcdFxcdG1hcmdpbi1ib3R0b206IDA7XFxuXFx0XFx0XFx0Ym9yZGVyLXdpZHRoOiAwICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoO1xcblxcdFxcdFxcdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdFxcdGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gUklHSFRcXG5cXHQmW3gtcGxhY2VtZW50Xj0ncmlnaHQnXSB7XFxuXFx0XFx0LnRvb2x0aXAtYXJyb3cge1xcblxcdFxcdFxcdHJpZ2h0OiAxMDAlO1xcblxcdFxcdFxcdG1hcmdpbi1yaWdodDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoIDA7XFxuXFx0XFx0XFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gTEVGVFxcblxcdCZbeC1wbGFjZW1lbnRePSdsZWZ0J10ge1xcblxcdFxcdC50b29sdGlwLWFycm93IHtcXG5cXHRcXHRcXHRsZWZ0OiAxMDAlO1xcblxcdFxcdFxcdG1hcmdpbi1yaWdodDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAwICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHRcXHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC8vIEhJRERFTiAvIFNIT1dOXFxuXFx0JlthcmlhLWhpZGRlbj0ndHJ1ZSddIHtcXG5cXHRcXHR2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFx0XFx0dHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzLCB2aXNpYmlsaXR5IC4xNXM7XFxuXFx0XFx0b3BhY2l0eTogMDtcXG5cXHR9XFxuXFx0JlthcmlhLWhpZGRlbj0nZmFsc2UnXSB7XFxuXFx0XFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcXG5cXHRcXHR0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXM7XFxuXFx0XFx0b3BhY2l0eTogMTtcXG5cXHR9XFxuXFxuXFx0Ly8gQ09OVEVOVFxcblxcdC50b29sdGlwLWlubmVyIHtcXG5cXHRcXHRtYXgtd2lkdGg6IDM1MHB4O1xcblxcdFxcdHBhZGRpbmc6IDVweCA4cHg7XFxuXFx0XFx0dGV4dC1hbGlnbjogY2VudGVyO1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcblxcdFxcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xcblxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcblxcblxcdC8vIEFSUk9XXFxuXFx0LnRvb2x0aXAtYXJyb3cge1xcblxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRcXHR6LWluZGV4OiAxO1xcblxcdFxcdHdpZHRoOiAwO1xcblxcdFxcdGhlaWdodDogMDtcXG5cXHRcXHRtYXJnaW46IDA7XFxuXFx0XFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcXG5cXHRcXHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcbn1cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYuZW90XCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzFfX18gZnJvbSBcIi4uLy4uL2ZvbnRzL2ljb25mb250LXZ1ZS04NGM0NjFmLndvZmZcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYudHRmXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzNfX18gZnJvbSBcIi4uLy4uL2ZvbnRzL2ljb25mb250LXZ1ZS04NGM0NjFmLnN2Z1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzJfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzNfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8zX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuQGZvbnQtZmFjZSB7XFxuICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gIHNyYzogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIC8qIElFOSBDb21wYXQgTW9kZXMgKi9cXG4gIHNyYzogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKSBmb3JtYXQoXFxcImVtYmVkZGVkLW9wZW50eXBlXFxcIiksIHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gKyBcIikgZm9ybWF0KFxcXCJ3b2ZmXFxcIiksIHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzJfX18gKyBcIikgZm9ybWF0KFxcXCJ0cnVldHlwZVxcXCIpLCB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8zX19fICsgXCIpIGZvcm1hdChcXFwic3ZnXFxcIik7XFxuICAvKiBMZWdhY3kgaU9TICovXFxufVxcbi5pY29uW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuLmljb24uYXJyb3ctbGVmdC1kb3VibGVbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ogVxcXCI7XFxufVxcbi5pY29uLmFycm93LWxlZnRbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oglxcXCI7XFxufVxcbi5pY29uLmFycm93LXJpZ2h0LWRvdWJsZVtkYXRhLXYtMTAwZTNiNmZdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiDXFxcIjtcXG59XFxuLmljb24uYXJyb3ctcmlnaHRbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ohFxcXCI7XFxufVxcbi5pY29uLmJyZWFkY3J1bWJbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ohVxcXCI7XFxufVxcbi5pY29uLmNoZWNrbWFya1tkYXRhLXYtMTAwZTNiNmZdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiGXFxcIjtcXG59XFxuLmljb24uY2xvc2VbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oh1xcXCI7XFxufVxcbi5pY29uLmNvbmZpcm1bZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oiFxcXCI7XFxufVxcbi5pY29uLmluZm9bZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oiVxcXCI7XFxufVxcbi5pY29uLm1lbnVbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oilxcXCI7XFxufVxcbi5pY29uLm1vcmVbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oi1xcXCI7XFxufVxcbi5pY29uLnBhdXNlW2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIxcXFwiO1xcbn1cXG4uaWNvbi5wbGF5W2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqI1cXFwiO1xcbn1cXG4uaWNvbi50cmlhbmdsZS1zW2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqI5cXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1hd2F5W2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqI9cXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1kbmRbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6okFxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWludmlzaWJsZVtkYXRhLXYtMTAwZTNiNmZdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiRXFxcIjtcXG59XFxuLmljb24udXNlci1zdGF0dXMtb25saW5lW2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJJcXFwiO1xcbn1cXG4uYXZhdGFyZGl2W2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG4uYXZhdGFyZGl2LS11bmtub3duW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbWF4Y29udHJhc3QpO1xcbn1cXG4uYXZhdGFyZGl2W2RhdGEtdi0xMDBlM2I2Zl06bm90KC5hdmF0YXJkaXYtLXVua25vd24pIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IHJnYmEoMCwgMCwgMCwgMC4wNSkgaW5zZXQ7XFxufVxcbmJvZHkudGhlbWUtLWRhcmsgLmF2YXRhcmRpdltkYXRhLXYtMTAwZTNiNmZdOm5vdCguYXZhdGFyZGl2LS11bmtub3duKSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMCAhaW1wb3J0YW50O1xcbn1cXG4uYXZhdGFyZGl2LS13aXRoLW1lbnVbZGF0YS12LTEwMGUzYjZmXSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmF2YXRhcmRpdi0td2l0aC1tZW51W2RhdGEtdi0xMDBlM2I2Zl0gIC50cmlnZ2VyIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgdG9wOiAwO1xcbiAgICAgIGxlZnQ6IDA7XFxufVxcbi5hdmF0YXJkaXYtLXdpdGgtbWVudSAuaWNvbi1tb3JlW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgICBmb250LXNpemU6IDE4cHg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmF2YXRhcmRpdi0td2l0aC1tZW51IC5pY29uLW1vcmVbZGF0YS12LTEwMGUzYjZmXTpiZWZvcmUge1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICAgICAgY29udGVudDogXFxcIu6oi1xcXCI7XFxufVxcbi5hdmF0YXJkaXYtLXdpdGgtbWVudSAuaWNvbi1tb3JlW2RhdGEtdi0xMDBlM2I2Zl06OmJlZm9yZSB7XFxuICAgICAgICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmF2YXRhcmRpdi0td2l0aC1tZW51OmZvY3VzIC5pY29uLW1vcmVbZGF0YS12LTEwMGUzYjZmXSwgLmF2YXRhcmRpdi0td2l0aC1tZW51OmhvdmVyIC5pY29uLW1vcmVbZGF0YS12LTEwMGUzYjZmXSB7XFxuICAgICAgb3BhY2l0eTogMTtcXG59XFxuLmF2YXRhcmRpdi0td2l0aC1tZW51OmZvY3VzIGltZ1tkYXRhLXYtMTAwZTNiNmZdLCAuYXZhdGFyZGl2LS13aXRoLW1lbnU6aG92ZXIgaW1nW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIG9wYWNpdHk6IDAuMztcXG59XFxuLmF2YXRhcmRpdi0td2l0aC1tZW51IC5pY29uLW1vcmVbZGF0YS12LTEwMGUzYjZmXSxcXG4gICAgLmF2YXRhcmRpdi0td2l0aC1tZW51IGltZ1tkYXRhLXYtMTAwZTNiNmZdIHtcXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayk7XFxufVxcbi5hdmF0YXJkaXYgPiAudW5rbm93bltkYXRhLXYtMTAwZTNiNmZdIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG59XFxuLmF2YXRhcmRpdiBpbWdbZGF0YS12LTEwMGUzYjZmXSB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xcbn1cXG4uYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3N0YXR1c1tkYXRhLXYtMTAwZTNiNmZdIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDIycHg7XFxuICAgIGxlZnQ6IDIycHg7XFxuICAgIHdpZHRoOiAxMHB4O1xcbiAgICBoZWlnaHQ6IDEwcHg7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcXG59XFxuLmF2YXRhcmRpdiAuYXZhdGFyZGl2X19zdGF0dXMtLXBvc2l0aXZlW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcXG59XFxuLmF2YXRhcmRpdiAuYXZhdGFyZGl2X19zdGF0dXMtLW5lZ2F0aXZlW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcXG59XFxuLmF2YXRhcmRpdiAuYXZhdGFyZGl2X19zdGF0dXMtLW5ldXRyYWxbZGF0YS12LTEwMGUzYjZmXSB7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcbi5hdmF0YXJkaXYgLmF2YXRhcmRpdl9fc3RhdHVzLS1uZXV0cmFsIHN2Z1tkYXRhLXYtMTAwZTNiNmZdIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogLTNweDtcXG4gICAgICAgIGxlZnQ6IC0ycHg7XFxufVxcbi5hdmF0YXJkaXYgLmF2YXRhcmRpdl9fc3RhdHVzLS1uZXV0cmFsIHN2ZyBwYXRoW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgICAgICBmaWxsOiAjYWFhO1xcbn1cXG4uYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHJpZ2h0OiAtNHB4O1xcbiAgICBib3R0b206IC00cHg7XFxuICAgIGhlaWdodDogMThweDtcXG4gICAgd2lkdGg6IDE4cHg7XFxuICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xcbiAgICBmb250LXNpemU6IHZhcigtLWRlZmF1bHQtZm9udC1zaXplKTtcXG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG4uYWNsaTpob3ZlciAuYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1ob3Zlcik7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1ob3Zlcik7XFxufVxcbi5hY2xpLmFjdGl2ZSAuYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxufVxcbi5hdmF0YXJkaXYgLmF2YXRhcmRpdl9fdXNlci1zdGF0dXMtLW9ubGluZVtkYXRhLXYtMTAwZTNiNmZdIHtcXG4gICAgICBjb2xvcjogIzQ5YjM4MjtcXG59XFxuLmF2YXRhcmRpdiAuYXZhdGFyZGl2X191c2VyLXN0YXR1cy0tb25saW5lW2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCLuqJJcXFwiO1xcbn1cXG4uYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzLS1kbmRbZGF0YS12LTEwMGUzYjZmXSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcXG4gICAgICBjb2xvcjogI2VkNDg0YztcXG59XFxuLmF2YXRhcmRpdiAuYXZhdGFyZGl2X191c2VyLXN0YXR1cy0tZG5kW2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCLuqJBcXFwiO1xcbn1cXG4uYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzLS1hd2F5W2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGNvbG9yOiAjZjRhMzMxO1xcbn1cXG4uYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzLS1hd2F5W2RhdGEtdi0xMDBlM2I2Zl06YmVmb3JlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCLuqI9cXFwiO1xcbn1cXG4uYXZhdGFyZGl2IC5hdmF0YXJkaXZfX3VzZXItc3RhdHVzLS1pY29uW2RhdGEtdi0xMDBlM2I2Zl0ge1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLmF2YXRhcmRpdiAucG9wb3Zlcm1lbnUtd3JhcHBlcltkYXRhLXYtMTAwZTNiNmZdIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5hdmF0YXItY2xhc3MtaWNvbltkYXRhLXYtMTAwZTNiNmZdIHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFya2VyKTtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vQXZhdGFyLnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8u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QUE4QztJQUM5Qyw4Q0FBOEM7SUFDOUMsa0JBQWtCO0FBQUE7QUFFbEI7TUFDQywyQ0FBMkM7TUFDM0MsK0NBQStDO0FBQUE7QUFFaEQ7TUFDQyx3Q0FBd0M7TUFDeEMsNENBQTRDO0FBQUE7QUF6SC9DO01BOEhHLGNBQWM7QUFBQTtBQTlIakI7UUV2Z0JJLG1DQWpGbUI7UUFrRm5CLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsWUFsRW9CO0FBQU87QUZza0IvQjtNQWtJRyx5QkFBeUI7TUFDekIsY0FBYztBQUFBO0FBbklqQjtRRXZnQkksbUNBakZtQjtRQWtGbkIsa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixZQXBFaUI7QUFBTztBRndrQjVCO01BdUlHLGNBQWM7QUFBQTtBQXZJakI7UUV2Z0JJLG1DQWpGbUI7UUFrRm5CLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsWUFyRWtCO0FBQU87QUZ5a0I3QjtNQTBJRyxZQUFZO01BQ1osNkJBQTZCO0FBQUE7QUEzSWhDO0lBZ0pFLGtCQUFrQjtJQUNsQixxQkFBcUI7QUFBQTtBQUl2QjtFQUNDLGtCQUFrQjtFQUNsQixnREFBZ0Q7RUFDaEQsWUFBWTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5AaW1wb3J0ICcuLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZSc7XFxuXFxuLmF2YXRhcmRpdiB7XFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG5cXG5cXHQmLS11bmtub3duIHtcXG5cXHRcXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tYXhjb250cmFzdCk7XFxuXFx0fVxcblxcblxcdCY6bm90KCYtLXVua25vd24pIHtcXG5cXHRcXHQvLyBXaGl0ZSBiYWNrZ3JvdW5kIGZvciBhdmF0YXJzIHdpdGggdHJhbnNwYXJlbmN5XFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcblxcdFxcdGJvZHkudGhlbWUtLWRhcmsgJiB7XFxuXFx0XFx0XFx0Ly8gQW5kIGJsYWNrIGJhY2tncm91bmQgaW4gZGFyayBtb2RlLCBhcyBpdCBzaGluZXMgdGhyb3VnaCBvbiBob3ZlciBvZiB0aGUgbWVudVxcblxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6ICMwMDAgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFx0XFx0Ym94LXNoYWRvdzogMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuMDUpIGluc2V0O1xcblxcdH1cXG5cXG5cXHQmLS13aXRoLW1lbnUge1xcblxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHQ6OnYtZGVlcCAudHJpZ2dlciB7XFxuXFx0XFx0XFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdFxcdFxcdHRvcDogMDtcXG5cXHRcXHRcXHRsZWZ0OiAwO1xcblxcdFxcdH1cXG5cXHRcXHQuaWNvbi1tb3JlIHtcXG5cXHRcXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRcXHRvcGFjaXR5OiAwO1xcblxcdFxcdFxcdGJhY2tncm91bmQ6IG5vbmU7XFxuXFx0XFx0XFx0Zm9udC1zaXplOiAxOHB4O1xcblxcdFxcdFxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0XFx0XFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFxuXFx0XFx0XFx0QGluY2x1ZGUgaWNvbmZvbnQoJ21vcmUnKTtcXG5cXHRcXHRcXHQmOjpiZWZvcmUge1xcblxcdFxcdFxcdFxcdGRpc3BsYXk6IGJsb2NrO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0XFx0Jjpmb2N1cyxcXG5cXHRcXHQmOmhvdmVyIHtcXG5cXHRcXHRcXHQuaWNvbi1tb3JlIHtcXG5cXHRcXHRcXHRcXHRvcGFjaXR5OiAxO1xcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRpbWcge1xcblxcdFxcdFxcdFxcdG9wYWNpdHk6IDAuMztcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdFxcdC5pY29uLW1vcmUsXFxuXFx0XFx0aW1nIHtcXG5cXHRcXHRcXHR0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayk7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQ+IC51bmtub3duIHtcXG5cXHRcXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFx0XFx0dG9wOiAwO1xcblxcdFxcdGxlZnQ6IDA7XFxuXFx0XFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0XFx0d2lkdGg6IDEwMCU7XFxuXFx0XFx0dGV4dC1hbGlnbjogY2VudGVyO1xcblxcdFxcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuXFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcblxcblxcdGltZyB7XFxuXFx0XFx0Ly8gQ292ZXIgZW50aXJlIGFyZWFcXG5cXHRcXHR3aWR0aDogMTAwJTtcXG5cXHRcXHRoZWlnaHQ6IDEwMCU7XFxuXFx0XFx0Ly8gS2VlcCByYXRpb1xcblxcdFxcdG9iamVjdC1maXQ6IGNvdmVyO1xcblxcdH1cXG5cXG5cXHQuYXZhdGFyZGl2X19zdGF0dXMge1xcblxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRcXHR0b3A6IDIycHg7XFxuXFx0XFx0bGVmdDogMjJweDtcXG5cXHRcXHR3aWR0aDogMTBweDtcXG5cXHRcXHRoZWlnaHQ6IDEwcHg7XFxuXFx0XFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7XFxuXFx0XFx0YmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcXG5cXHRcXHQmLS1wb3NpdGl2ZSB7XFxuXFx0XFx0XFx0Ym9yZGVyLXJhZGl1czogNTAlO1xcblxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xcblxcdFxcdH1cXG5cXHRcXHQmLS1uZWdhdGl2ZSB7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xcblxcdFxcdH1cXG5cXHRcXHQmLS1uZXV0cmFsIHtcXG5cXHRcXHRcXHRib3JkZXI6IG5vbmU7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRzdmcge1xcblxcdFxcdFxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRcXHRcXHRcXHR0b3A6IC0zcHg7XFxuXFx0XFx0XFx0XFx0bGVmdDogLTJweDtcXG5cXHRcXHRcXHRcXHRwYXRoIHtcXG5cXHRcXHRcXHRcXHRcXHRmaWxsOiAjYWFhO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQuYXZhdGFyZGl2X191c2VyLXN0YXR1cyB7XFxuXFx0XFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdFxcdHJpZ2h0OiAtNHB4O1xcblxcdFxcdGJvdHRvbTogLTRweDtcXG5cXHRcXHRoZWlnaHQ6IDE4cHg7XFxuXFx0XFx0d2lkdGg6IDE4cHg7XFxuXFx0XFx0bGluZS1oZWlnaHQ6IDE1cHg7XFxuXFx0XFx0Zm9udC1zaXplOiB2YXIoLS1kZWZhdWx0LWZvbnQtc2l6ZSk7XFxuXFx0XFx0Ym9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcblxcdFxcdGJvcmRlci1yYWRpdXM6IDUwJTtcXG5cXG5cXHRcXHQuYWNsaTpob3ZlciAmIHtcXG5cXHRcXHRcXHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaG92ZXIpO1xcblxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaG92ZXIpO1xcblxcdFxcdH1cXG5cXHRcXHQuYWNsaS5hY3RpdmUgJiB7XFxuXFx0XFx0XFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ji0tb25saW5le1xcblxcdFxcdFxcdEBpbmNsdWRlIGljb25mb250KCd1c2VyLXN0YXR1cy1vbmxpbmUnKTtcXG5cXHRcXHRcXHRjb2xvcjogIzQ5YjM4MjtcXG5cXHRcXHR9XFxuXFx0XFx0Ji0tZG5ke1xcblxcdFxcdFxcdEBpbmNsdWRlIGljb25mb250KCd1c2VyLXN0YXR1cy1kbmQnKTtcXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xcblxcdFxcdFxcdGNvbG9yOiAjZWQ0ODRjO1xcblxcdFxcdH1cXG5cXHRcXHQmLS1hd2F5e1xcblxcdFxcdFxcdEBpbmNsdWRlIGljb25mb250KCd1c2VyLXN0YXR1cy1hd2F5Jyk7XFxuXFx0XFx0XFx0Y29sb3I6ICNmNGEzMzE7XFxuXFx0XFx0fVxcblxcdFxcdCYtLWljb24ge1xcblxcdFxcdFxcdGJvcmRlcjogbm9uZTtcXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC5wb3BvdmVybWVudS13cmFwcGVyIHtcXG5cXHRcXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0XFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xcblxcdH1cXG59XFxuXFxuLmF2YXRhci1jbGFzcy1pY29uIHtcXG5cXHRib3JkZXItcmFkaXVzOiA1MCU7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrZXIpO1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiLFwiJF9faWNvbmZvbnRfX2RhdGE6IG1hcC1tZXJnZShpZihnbG9iYWxfdmFyaWFibGVfZXhpc3RzKCdfX2ljb25mb250X19kYXRhJyksICRfX2ljb25mb250X19kYXRhLCAoKSksIChcXG5cXHRcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiOiAoXFxuXFx0XFx0XFxcImFycm93LWxlZnQtZG91YmxlXFxcIjogXFxcIlxcXFxlYTAxXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctbGVmdFxcXCI6IFxcXCJcXFxcZWEwMlxcXCIsXFxuXFx0XFx0XFxcImFycm93LXJpZ2h0LWRvdWJsZVxcXCI6IFxcXCJcXFxcZWEwM1xcXCIsXFxuXFx0XFx0XFxcImFycm93LXJpZ2h0XFxcIjogXFxcIlxcXFxlYTA0XFxcIixcXG5cXHRcXHRcXFwiYnJlYWRjcnVtYlxcXCI6IFxcXCJcXFxcZWEwNVxcXCIsXFxuXFx0XFx0XFxcImNoZWNrbWFya1xcXCI6IFxcXCJcXFxcZWEwNlxcXCIsXFxuXFx0XFx0XFxcImNsb3NlXFxcIjogXFxcIlxcXFxlYTA3XFxcIixcXG5cXHRcXHRcXFwiY29uZmlybVxcXCI6IFxcXCJcXFxcZWEwOFxcXCIsXFxuXFx0XFx0XFxcImluZm9cXFwiOiBcXFwiXFxcXGVhMDlcXFwiLFxcblxcdFxcdFxcXCJtZW51XFxcIjogXFxcIlxcXFxlYTBhXFxcIixcXG5cXHRcXHRcXFwibW9yZVxcXCI6IFxcXCJcXFxcZWEwYlxcXCIsXFxuXFx0XFx0XFxcInBhdXNlXFxcIjogXFxcIlxcXFxlYTBjXFxcIixcXG5cXHRcXHRcXFwicGxheVxcXCI6IFxcXCJcXFxcZWEwZFxcXCIsXFxuXFx0XFx0XFxcInRyaWFuZ2xlLXNcXFwiOiBcXFwiXFxcXGVhMGVcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1hd2F5XFxcIjogXFxcIlxcXFxlYTBmXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtZG5kXFxcIjogXFxcIlxcXFxlYTEwXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtaW52aXNpYmxlXFxcIjogXFxcIlxcXFxlYTExXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtb25saW5lXFxcIjogXFxcIlxcXFxlYTEyXFxcIlxcblxcdClcXG4pKTtcXG5cXG5cXG4kY3JlYXRlLWZvbnQtZmFjZTogdHJ1ZSAhZGVmYXVsdDsgLy8gc2hvdWxkIHRoZSBAZm9udC1mYWNlIHRhZyBnZXQgY3JlYXRlZD9cXG5cXG4vLyBzaG91bGQgdGhlcmUgYmUgYSBjdXN0b20gY2xhc3MgZm9yIGVhY2ggaWNvbj8gd2lsbCBiZSAuZmlsZW5hbWVcXG4kY3JlYXRlLWljb24tY2xhc3NlczogdHJ1ZSAhZGVmYXVsdDsgXFxuXFxuLy8gd2hhdCBpcyB0aGUgY29tbW9uIGNsYXNzIG5hbWUgdGhhdCBpY29ucyBzaGFyZT8gaW4gdGhpcyBjYXNlIGljb25zIG5lZWQgdG8gaGF2ZSAuaWNvbi5maWxlbmFtZSBpbiB0aGVpciBjbGFzc2VzXFxuLy8gdGhpcyByZXF1aXJlcyB5b3UgdG8gaGF2ZSAyIGNsYXNzZXMgb24gZWFjaCBpY29uIGh0bWwgZWxlbWVudCwgYnV0IHJlZHVjZWQgcmVkZWNsYXJhdGlvbiBvZiB0aGUgZm9udCBmYW1pbHlcXG4vLyBmb3IgZWFjaCBpY29uXFxuJGljb24tY29tbW9uLWNsYXNzOiAnaWNvbicgIWRlZmF1bHQ7XFxuXFxuLy8gaWYgeW91IHdoaXNoIHRvIHByZWZpeCB5b3VyIGZpbGVuYW1lcywgaGVyZSB5b3UgY2FuIGRvIHNvLlxcbi8vIGlmIHRoaXMgc3RyaW5nIHN0YXlzIGVtcHR5LCB5b3VyIGNsYXNzZXMgd2lsbCB1c2UgdGhlIGZpbGVuYW1lLCBmb3IgZXhhbXBsZVxcbi8vIGFuIGljb24gY2FsbGVkIHN0YXIuc3ZnIHdpbGwgcmVzdWx0IGluIGEgY2xhc3MgY2FsbGVkIC5zdGFyXFxuLy8gaWYgeW91IHVzZSB0aGUgcHJlZml4IHRvIGJlICdpY29uLScgaXQgd291bGQgcmVzdWx0IGluIC5pY29uLXN0YXJcXG4kaWNvbi1wcmVmaXg6ICcnICFkZWZhdWx0OyBcXG5cXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IGZvbnQgZ3JvdXBcXG5AZnVuY3Rpb24gaWNvbmZvbnQtZ3JvdXAoJGdyb3VwOiBudWxsKSB7XFxuICBAaWYgKG51bGwgPT0gJGdyb3VwKSB7XFxuICAgICRncm91cDogbnRoKG1hcC1rZXlzKCRfX2ljb25mb250X19kYXRhKSwgMSk7XFxuICB9XFxuICBAaWYgKGZhbHNlID09IG1hcC1oYXMta2V5KCRfX2ljb25mb250X19kYXRhLCAkZ3JvdXApKSB7XFxuICAgIEB3YXJuICdVbmRlZmluZWQgSWNvbmZvbnQgRmFtaWx5ISc7XFxuICAgIEByZXR1cm4gKCk7XFxuICB9XFxuICBAcmV0dXJuIG1hcC1nZXQoJF9faWNvbmZvbnRfX2RhdGEsICRncm91cCk7XFxufVxcblxcbi8vIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgaWNvbiBvZiBhIGdyb3VwXFxuQGZ1bmN0aW9uIGljb25mb250LWl0ZW0oJG5hbWUpIHtcXG4gICRzbGFzaDogc3RyLWluZGV4KCRuYW1lLCAnLycpO1xcbiAgJGdyb3VwOiBudWxsO1xcbiAgQGlmICgkc2xhc2gpIHtcXG4gICAgJGdyb3VwOiBzdHItc2xpY2UoJG5hbWUsIDAsICRzbGFzaCAtIDEpO1xcbiAgICAkbmFtZTogc3RyLXNsaWNlKCRuYW1lLCAkc2xhc2ggKyAxKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAkZ3JvdXA6IG50aChtYXAta2V5cygkX19pY29uZm9udF9fZGF0YSksIDEpO1xcbiAgfVxcbiAgJGdyb3VwOiBpY29uZm9udC1ncm91cCgkZ3JvdXApO1xcbiAgQGlmIChmYWxzZSA9PSBtYXAtaGFzLWtleSgkZ3JvdXAsICRuYW1lKSkge1xcbiAgICBAd2FybiAnVW5kZWZpbmVkIEljb25mb250IEdseXBoISc7XFxuICAgIEByZXR1cm4gJyc7XFxuICB9XFxuICBAcmV0dXJuIG1hcC1nZXQoJGdyb3VwLCAkbmFtZSk7XFxufVxcblxcbi8vIGNvbXBsZXRlIG1peGluZyB0byBpbmNsdWRlIHRoZSBpY29uXFxuLy8gdXNhZ2U6XFxuLy8gLm15X2ljb257IEBpbmNsdWRlIGljb25mb250KCdzdGFyJykgfVxcbkBtaXhpbiBpY29uZm9udCgkaWNvbikge1xcbiAgJHNsYXNoOiBzdHItaW5kZXgoJGljb24sICcvJyk7XFxuICAkZ3JvdXA6IG51bGw7XFxuICBAaWYgKCRzbGFzaCkge1xcbiAgICAkZ3JvdXA6IHN0ci1zbGljZSgkaWNvbiwgMCwgJHNsYXNoIC0gMSk7XFxuICB9IEBlbHNlIHtcXG4gICAgJGdyb3VwOiBudGgobWFwLWtleXMoJF9faWNvbmZvbnRfX2RhdGEpLCAxKTtcXG4gIH1cXG4gICY6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6ICRncm91cDtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBjb250ZW50OiBpY29uZm9udC1pdGVtKCRpY29uKTtcXG4gIH1cXG59XFxuXFxuLy8gY3JlYXRlcyB0aGUgZm9udCBmYWNlIHRhZyBpZiB0aGUgdmFyaWFibGUgaXMgc2V0IHRvIHRydWUgKGRlZmF1bHQpXFxuQGlmICRjcmVhdGUtZm9udC1mYWNlID09IHRydWUge1xcbiAgQGZvbnQtZmFjZSB7XFxuICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgc3JjOiB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdCcpOyAvKiBJRTkgQ29tcGF0IE1vZGVzICovXFxuICAgc3JjOiB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIC8qIElFNi1JRTggKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgLyogUHJldHR5IE1vZGVybiBCcm93c2VycyAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYudHRmJykgIGZvcm1hdCgndHJ1ZXR5cGUnKSwgLyogU2FmYXJpLCBBbmRyb2lkLCBpT1MgKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLnN2ZycpIGZvcm1hdCgnc3ZnJyk7IC8qIExlZ2FjeSBpT1MgKi9cXG4gIH1cXG59XFxuXFxuLy8gY3JlYXRlcyBpY29uIGNsYXNzZXMgZm9yIGVhY2ggaW5kaXZpZHVhbCBsb2FkZWQgc3ZnIChkZWZhdWx0KVxcbkBpZiAkY3JlYXRlLWljb24tY2xhc3NlcyA9PSB0cnVlIHtcXG4gIC4jeyRpY29uLWNvbW1vbi1jbGFzc30ge1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICAgIEBlYWNoICRpY29uLCAkY29udGVudCBpbiBtYXAtZ2V0KCRfX2ljb25mb250X19kYXRhLCBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiKSB7XFxuICAgICAgJi4jeyRpY29uLXByZWZpeH0jeyRpY29ufTpiZWZvcmUge1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgICAgICBjb250ZW50OiBpY29uZm9udC1pdGVtKFxcXCJpY29uZm9udC12dWUtODRjNDYxZi8jeyRpY29ufVxcXCIpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbi5vcHRpb25bZGF0YS12LTdmZTk1YThmXSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQpO1xcbn1cXG4ub3B0aW9uX19hdmF0YXJbZGF0YS12LTdmZTk1YThmXSB7XFxuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tbWFyZ2luKTtcXG59XFxuLm9wdGlvbl9fZGV0YWlsc1tkYXRhLXYtN2ZlOTVhOGZdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleDogMSAxO1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgbWluLXdpZHRoOiAwO1xcbn1cXG4ub3B0aW9uX19saW5lb25lW2RhdGEtdi03ZmU5NWE4Zl0ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1saWdodCk7XFxufVxcbi5vcHRpb25fX2xpbmV0d29bZGF0YS12LTdmZTk1YThmXSB7XFxuICAgIG9wYWNpdHk6IDAuNztcXG59XFxuLm9wdGlvbl9fbGluZW9uZVtkYXRhLXYtN2ZlOTVhOGZdLCAub3B0aW9uX19saW5ldHdvW2RhdGEtdi03ZmU5NWE4Zl0ge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gICAgbGluZS1oZWlnaHQ6IDEuMWVtO1xcbn1cXG4ub3B0aW9uX19saW5lb25lIHN0cm9uZ1tkYXRhLXYtN2ZlOTVhOGZdLCAub3B0aW9uX19saW5ldHdvIHN0cm9uZ1tkYXRhLXYtN2ZlOTVhOGZdIHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG59XFxuLm9wdGlvbl9faWNvbltkYXRhLXYtN2ZlOTVhOGZdIHtcXG4gICAgZmxleDogMCAwIDQ0cHg7XFxuICAgIHdpZHRoOiA0NHB4O1xcbiAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHg7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL0xpc3RJdGVtSWNvbi52dWVcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Fzc2V0cy92YXJpYWJsZXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFBZ0I7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VEcUJFO0FBbU5GO0VBQ0MsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixXQUFXO0VBQ1gscUJBQXFCO0FBQUE7QUFFckI7SUFDQywyQkFBMkI7QUFBQTtBQUc1QjtJQUNDLGFBQWE7SUFDYixTQUFTO0lBQ1Qsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixZQUFZO0FBQUE7QUFHYjtJQUNDLDhCQUE4QjtBQUFBO0FBRS9CO0lBQ0MsWUNuTmlCO0FBQUE7QURxTmxCO0lBRUMsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsa0JBQWtCO0FBQUE7QUFMbEI7TUFPQyxpQkFBaUI7QUFBQTtBQUluQjtJQUNDLGNDblBtQjtJRG9QbkIsV0NwUG1CO0lEcVBuQixZQ3JQbUI7SURzUG5CLFlDck9tQjtJRHNPbkIsMkJBQTJCO0lBQzNCLHFCQUFxQjtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG4ub3B0aW9uIHtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0d2lkdGg6IDEwMCU7XFxuXFx0aGVpZ2h0OiB2YXIoLS1oZWlnaHQpO1xcblxcblxcdCZfX2F2YXRhciB7XFxuXFx0XFx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1tYXJnaW4pO1xcblxcdH1cXG5cXG5cXHQmX19kZXRhaWxzIHtcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdGZsZXg6IDEgMTtcXG5cXHRcXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblxcdFxcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcdFxcdG1pbi13aWR0aDogMDtcXG5cXHR9XFxuXFxuXFx0Jl9fbGluZW9uZSB7XFxuXFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtbGlnaHQpO1xcblxcdH1cXG5cXHQmX19saW5ldHdvIHtcXG5cXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9ub3JtYWw7XFxuXFx0fVxcblxcdCZfX2xpbmVvbmUsXFxuXFx0Jl9fbGluZXR3byB7XFxuXFx0XFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRcXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdFxcdGxpbmUtaGVpZ2h0OiAxLjFlbTtcXG5cXHRcXHRzdHJvbmcge1xcblxcdFxcdFxcdGZvbnQtd2VpZ2h0OiBib2xkO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Jl9faWNvbiB7XFxuXFx0XFx0ZmxleDogMCAwICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHR3aWR0aDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdGhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Rpc2FibGVkO1xcblxcdFxcdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG5cXHRcXHRiYWNrZ3JvdW5kLXNpemU6IDE2cHg7XFxuXFx0fVxcbn1cXG5cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG4ubmFtZS1wYXJ0c1tkYXRhLXYtMDI2YzNkZWZdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxufVxcbi5uYW1lLXBhcnRzX19maXJzdFtkYXRhLXYtMDI2YzNkZWZdIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcbi5uYW1lLXBhcnRzX19maXJzdFtkYXRhLXYtMDI2YzNkZWZdLCAubmFtZS1wYXJ0c19fbGFzdFtkYXRhLXYtMDI2YzNkZWZdIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZTtcXG59XFxuLm5hbWUtcGFydHNfX2ZpcnN0IHN0cm9uZ1tkYXRhLXYtMDI2YzNkZWZdLCAubmFtZS1wYXJ0c19fbGFzdCBzdHJvbmdbZGF0YS12LTAyNmMzZGVmXSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL0VsbGlwc2lzZWRPcHRpb24udnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQXdHRjtFQUNDLGFBQWE7RUFDYixlQUFlO0FBQUE7QUFDZjtJQUNDLGdCQUFnQjtJQUNoQix1QkFBdUI7QUFBQTtBQUV4QjtJQUdDLGdCQUFnQjtBQUFBO0FBSGhCO01BS0MsaUJBQWlCO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbi5uYW1lLXBhcnRzIHtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdG1heC13aWR0aDogMTAwJTtcXG5cXHQmX19maXJzdCB7XFxuXFx0XFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHR9XFxuXFx0Jl9fZmlyc3QsXFxuXFx0Jl9fbGFzdCB7XFxuXFx0XFx0Ly8gcHJldmVudCB3aGl0ZXNwYWNlIGZyb20gYmVpbmcgdHJpbW1lZFxcblxcdFxcdHdoaXRlLXNwYWNlOiBwcmU7XFxuXFx0XFx0c3Ryb25nIHtcXG5cXHRcXHRcXHRmb250LXdlaWdodDogYm9sZDtcXG5cXHRcXHR9XFxuXFx0fVxcbn1cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG4ucG9wb3ZlciB7XFxuICB6LWluZGV4OiAxMDAwMDA7XFxuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAxMHB4IHZhcigtLWNvbG9yLWJveC1zaGFkb3cpKTtcXG59XFxuLnBvcG92ZXJfX2lubmVyIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcbn1cXG4ucG9wb3Zlcl9fYXJyb3cge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHotaW5kZXg6IDE7XFxuICAgIHdpZHRoOiAwO1xcbiAgICBoZWlnaHQ6IDA7XFxuICAgIG1hcmdpbjogMTBweDtcXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcbn1cXG4ucG9wb3Zlclt4LXBsYWNlbWVudF49J3RvcCddIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcXG59XFxuLnBvcG92ZXJbeC1wbGFjZW1lbnRePSd0b3AnXSAucG9wb3Zlcl9fYXJyb3cge1xcbiAgICAgIGJvdHRvbTogLTEwcHg7XFxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcbiAgICAgIG1hcmdpbi10b3A6IDA7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgICBib3JkZXItd2lkdGg6IDEwcHggMTBweCAwIDEwcHg7XFxuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcbi5wb3BvdmVyW3gtcGxhY2VtZW50Xj0nYm90dG9tJ10ge1xcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xcbn1cXG4ucG9wb3Zlclt4LXBsYWNlbWVudF49J2JvdHRvbSddIC5wb3BvdmVyX19hcnJvdyB7XFxuICAgICAgdG9wOiAtMTBweDtcXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XFxuICAgICAgbWFyZ2luLXRvcDogMDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICAgIGJvcmRlci13aWR0aDogMCAxMHB4IDEwcHggMTBweDtcXG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG59XFxuLnBvcG92ZXJbeC1wbGFjZW1lbnRePSdyaWdodCddIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XFxufVxcbi5wb3BvdmVyW3gtcGxhY2VtZW50Xj0ncmlnaHQnXSAucG9wb3Zlcl9fYXJyb3cge1xcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcbiAgICAgIGxlZnQ6IC0xMHB4O1xcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBib3JkZXItd2lkdGg6IDEwcHggMTBweCAxMHB4IDA7XFxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbn1cXG4ucG9wb3Zlclt4LXBsYWNlbWVudF49J2xlZnQnXSB7XFxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcXG59XFxuLnBvcG92ZXJbeC1wbGFjZW1lbnRePSdsZWZ0J10gLnBvcG92ZXJfX2Fycm93IHtcXG4gICAgICB0b3A6IGNhbGMoNTAlIC0gJGFycm93LXdpZHRoKTtcXG4gICAgICByaWdodDogLTEwcHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIGJvcmRlci13aWR0aDogMTBweCAwIDEwcHggMTBweDtcXG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbn1cXG4ucG9wb3ZlclthcmlhLWhpZGRlbj0ndHJ1ZSddIHtcXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayksIHZpc2liaWxpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKTtcXG4gICAgb3BhY2l0eTogMDtcXG59XFxuLnBvcG92ZXJbYXJpYS1oaWRkZW49J2ZhbHNlJ10ge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayk7XFxuICAgIG9wYWNpdHk6IDE7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL1BvcG92ZXIudnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQTJGRjtFQUNDLGVBQWU7RUFDZix5QkFBeUI7RUFFekIsdURBQXVEO0FBQUE7QUFFdkQ7SUFDQyxVQUFVO0lBQ1YsNkJBQTZCO0lBQzdCLG1DQUFtQztJQUNuQyx3Q0FBd0M7QUFBQTtBQUd6QztJQUNDLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsUUFBUTtJQUNSLFNBQVM7SUFDVCxZQXBCZ0I7SUFxQmhCLG1CQUFtQjtJQUNuQiwwQ0FBMEM7QUFBQTtBQXBCNUM7SUF3QkUsbUJBMUJnQjtBQUFBO0FBRWxCO01BMkJHLGFBN0JlO01BOEJmLDhCQUE4QjtNQUM5QixhQUFhO01BQ2IsZ0JBQWdCO01BQ2hCLDhCQWpDZTtNQWtDZiwwQ0FBMEM7TUFDMUMsMkNBQTJDO01BQzNDLHlDQUF5QztBQUFBO0FBbEM1QztJQXVDRSxnQkF6Q2dCO0FBQUE7QUFFbEI7TUEwQ0csVUE1Q2U7TUE2Q2YsOEJBQThCO01BQzlCLGFBQWE7TUFDYixnQkFBZ0I7TUFDaEIsOEJBaERlO01BaURmLHdDQUF3QztNQUN4QywwQ0FBMEM7TUFDMUMseUNBQXlDO0FBQUE7QUFqRDVDO0lBc0RFLGlCQXhEZ0I7QUFBQTtBQUVsQjtNQXlERyw2QkFBNkI7TUFDN0IsV0E1RGU7TUE2RGYsZUFBZTtNQUNmLGNBQWM7TUFDZCw4QkFBc0Q7TUFDdEQsd0NBQXdDO01BQ3hDLDJDQUEyQztNQUMzQyx5Q0FBeUM7QUFBQTtBQWhFNUM7SUFxRUUsa0JBdkVnQjtBQUFBO0FBRWxCO01Bd0VHLDZCQUE2QjtNQUM3QixZQTNFZTtNQTRFZixlQUFlO01BQ2YsY0FBYztNQUNkLDhCQTlFZTtNQStFZix3Q0FBd0M7TUFDeEMsMENBQTBDO01BQzFDLDJDQUEyQztBQUFBO0FBL0U5QztJQW9GRSxrQkFBa0I7SUFDbEIsNkVBQTZFO0lBQzdFLFVBQVU7QUFBQTtBQXRGWjtJQTBGRSxtQkFBbUI7SUFDbkIsMENBQTBDO0lBQzFDLFVBQVU7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIkc2NvcGVfdmVyc2lvbjpcXFwiODRjNDYxZlxcXCI7IEBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuJGFycm93LXdpZHRoOiAxMHB4O1xcblxcbi5wb3BvdmVyIHtcXG5cXHR6LWluZGV4OiAxMDAwMDA7XFxuXFx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcXG5cXG5cXHRmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDEwcHggdmFyKC0tY29sb3ItYm94LXNoYWRvdykpO1xcblxcblxcdCZfX2lubmVyIHtcXG5cXHRcXHRwYWRkaW5nOiAwO1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcblxcdFxcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xcblxcdFxcdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcblxcblxcdCZfX2Fycm93IHtcXG5cXHRcXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFx0XFx0ei1pbmRleDogMTtcXG5cXHRcXHR3aWR0aDogMDtcXG5cXHRcXHRoZWlnaHQ6IDA7XFxuXFx0XFx0bWFyZ2luOiAkYXJyb3ctd2lkdGg7XFxuXFx0XFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcXG5cXHRcXHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcblxcblxcdCZbeC1wbGFjZW1lbnRePSd0b3AnXSB7XFxuXFx0XFx0bWFyZ2luLWJvdHRvbTogJGFycm93LXdpZHRoO1xcblxcblxcdFxcdC5wb3BvdmVyX19hcnJvdyB7XFxuXFx0XFx0XFx0Ym90dG9tOiAtJGFycm93LXdpZHRoO1xcblxcdFxcdFxcdGxlZnQ6IGNhbGMoNTAlIC0gJGFycm93LXdpZHRoKTtcXG5cXHRcXHRcXHRtYXJnaW4tdG9wOiAwO1xcblxcdFxcdFxcdG1hcmdpbi1ib3R0b206IDA7XFxuXFx0XFx0XFx0Ym9yZGVyLXdpZHRoOiAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoIDAgJGFycm93LXdpZHRoO1xcblxcdFxcdFxcdGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Jlt4LXBsYWNlbWVudF49J2JvdHRvbSddIHtcXG5cXHRcXHRtYXJnaW4tdG9wOiAkYXJyb3ctd2lkdGg7XFxuXFxuXFx0XFx0LnBvcG92ZXJfX2Fycm93IHtcXG5cXHRcXHRcXHR0b3A6IC0kYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0bGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcblxcdFxcdFxcdG1hcmdpbi10b3A6IDA7XFxuXFx0XFx0XFx0bWFyZ2luLWJvdHRvbTogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6IDAgJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQmW3gtcGxhY2VtZW50Xj0ncmlnaHQnXSB7XFxuXFx0XFx0bWFyZ2luLWxlZnQ6ICRhcnJvdy13aWR0aDtcXG5cXG5cXHRcXHQucG9wb3Zlcl9fYXJyb3cge1xcblxcdFxcdFxcdHRvcDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcblxcdFxcdFxcdGxlZnQ6IC0kYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0bWFyZ2luLXJpZ2h0OiAwO1xcblxcdFxcdFxcdG1hcmdpbi1sZWZ0OiAwO1xcblxcdFxcdFxcdGJvcmRlci13aWR0aDogJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggMDtcXG5cXHRcXHRcXHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQmW3gtcGxhY2VtZW50Xj0nbGVmdCddIHtcXG5cXHRcXHRtYXJnaW4tcmlnaHQ6ICRhcnJvdy13aWR0aDtcXG5cXG5cXHRcXHQucG9wb3Zlcl9fYXJyb3cge1xcblxcdFxcdFxcdHRvcDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcblxcdFxcdFxcdHJpZ2h0OiAtJGFycm93LXdpZHRoO1xcblxcdFxcdFxcdG1hcmdpbi1yaWdodDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAwICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdCZbYXJpYS1oaWRkZW49J3RydWUnXSB7XFxuXFx0XFx0dmlzaWJpbGl0eTogaGlkZGVuO1xcblxcdFxcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKSwgdmlzaWJpbGl0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spO1xcblxcdFxcdG9wYWNpdHk6IDA7XFxuXFx0fVxcblxcblxcdCZbYXJpYS1oaWRkZW49J2ZhbHNlJ10ge1xcblxcdFxcdHZpc2liaWxpdHk6IHZpc2libGU7XFxuXFx0XFx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spO1xcblxcdFxcdG9wYWNpdHk6IDE7XFxuXFx0fVxcbn1cXG5cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG51bFtkYXRhLXYtMGEwZWI3MTldIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9Qb3BvdmVyTWVudS52dWVcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Fzc2V0cy92YXJpYWJsZXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFBZ0I7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VEcUJFO0FBcUNGO0VBQ0MsYUFBYTtFQUNiLHNCQUFzQjtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG51bCB7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5saVtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4OiAwIDAgYXV0bztcXG4gIC8qIGNzcyBoYWNrLCBvbmx5IGZpcnN0IG5vdCBoaWRkZW4gKi9cXG59XFxubGkuaGlkZGVuW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbn1cXG5saSA+IGJ1dHRvbltkYXRhLXYtNTEyZWE3NjhdLFxcbiAgbGkgPiBhW2RhdGEtdi01MTJlYTc2OF0sXFxuICBsaSA+IC5tZW51aXRlbVtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBsaW5lLWhlaWdodDogNDRweDtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiAwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIG9wYWNpdHk6IDAuNztcXG4gICAgLyogcHJldmVudCAuYWN0aW9uIGNsYXNzIHRvIGJyZWFrIHRoZSBkZXNpZ24gKi9cXG4gICAgLyogQWRkIHBhZGRpbmcgaWYgY29udGFpbnMgaWNvbit0ZXh0ICovXFxuICAgIC8qIERFUFJFQ0FURUQhIG9sZCBpbWcgaW4gcG9wb3ZlciBmYWxsYmFja1xcblxcdFxcdFxcdCogVE9ETzogdG8gcmVtb3ZlICovXFxuICAgIC8qIGNoZWNrYm94L3JhZGlvIGZpeGVzICovXFxuICAgIC8qIG5vIG1hcmdpbiBpZiBoaWRkZW4gc3BhbiBiZWZvcmUgKi9cXG4gICAgLyogSW5wdXRzIGluc2lkZSBwb3BvdmVyIHN1cHBvcnRzIHRleHQsIHN1Ym1pdCAmIHJlc2V0ICovXFxufVxcbmxpID4gYnV0dG9uIHNwYW5bY2xhc3NePSdpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYnV0dG9uIHNwYW5bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLCBsaSA+IGJ1dHRvbltjbGFzc149J2ljb24tJ11bZGF0YS12LTUxMmVhNzY4XSwgbGkgPiBidXR0b25bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGEgc3BhbltjbGFzc149J2ljb24tJ11bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBhIHNwYW5bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGFbY2xhc3NePSdpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYVtjbGFzcyo9JyBpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtIHNwYW5bY2xhc3NePSdpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtIHNwYW5bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IC5tZW51aXRlbVtjbGFzc149J2ljb24tJ11bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW1bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgICBtaW4td2lkdGg6IDA7XFxuICAgICAgLyogT3ZlcndyaXRlIGljb25zKi9cXG4gICAgICBtaW4taGVpZ2h0OiAwO1xcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDE0cHggY2VudGVyO1xcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTZweDtcXG59XFxubGkgPiBidXR0b24gc3BhbltjbGFzc149J2ljb24tJ11bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBidXR0b24gc3BhbltjbGFzcyo9JyBpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYSBzcGFuW2NsYXNzXj0naWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGEgc3BhbltjbGFzcyo9JyBpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtIHNwYW5bY2xhc3NePSdpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtIHNwYW5bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgICAvKiBLZWVwIHBhZGRpbmcgdG8gZGVmaW5lIHRoZSB3aWR0aCB0b1xcblxcdFxcdFxcdFxcdGFzc3VyZSBjb3JyZWN0IHBvc2l0aW9uIG9mIGEgcG9zc2libGUgdGV4dCAqL1xcbiAgICAgIHBhZGRpbmc6IDIycHggMCAyMnB4IDQ0cHg7XFxufVxcbmxpID4gYnV0dG9uOm5vdChbY2xhc3NePSdpY29uLSddKTpub3QoW2NsYXNzKj0naWNvbi0nXSkgPiBzcGFuW2RhdGEtdi01MTJlYTc2OF06bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKTpmaXJzdC1jaGlsZCxcXG4gICAgbGkgPiBidXR0b246bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSA+IGlucHV0W2RhdGEtdi01MTJlYTc2OF06bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKTpmaXJzdC1jaGlsZCxcXG4gICAgbGkgPiBidXR0b246bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSA+IGZvcm1bZGF0YS12LTUxMmVhNzY4XTpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pOmZpcnN0LWNoaWxkLFxcbiAgICBsaSA+IGE6bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSA+IHNwYW5bZGF0YS12LTUxMmVhNzY4XTpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pOmZpcnN0LWNoaWxkLFxcbiAgICBsaSA+IGE6bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSA+IGlucHV0W2RhdGEtdi01MTJlYTc2OF06bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKTpmaXJzdC1jaGlsZCxcXG4gICAgbGkgPiBhOm5vdChbY2xhc3NePSdpY29uLSddKTpub3QoW2NsYXNzKj0naWNvbi0nXSkgPiBmb3JtW2RhdGEtdi01MTJlYTc2OF06bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKTpmaXJzdC1jaGlsZCxcXG4gICAgbGkgPiAubWVudWl0ZW06bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSA+IHNwYW5bZGF0YS12LTUxMmVhNzY4XTpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pOmZpcnN0LWNoaWxkLFxcbiAgICBsaSA+IC5tZW51aXRlbTpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pID4gaW5wdXRbZGF0YS12LTUxMmVhNzY4XTpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pOmZpcnN0LWNoaWxkLFxcbiAgICBsaSA+IC5tZW51aXRlbTpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pID4gZm9ybVtkYXRhLXYtNTEyZWE3NjhdOm5vdChbY2xhc3NePSdpY29uLSddKTpub3QoW2NsYXNzKj0naWNvbi0nXSk6Zmlyc3QtY2hpbGQge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiA0NHB4O1xcbn1cXG5saSA+IGJ1dHRvbltjbGFzc149J2ljb24tJ11bZGF0YS12LTUxMmVhNzY4XSwgbGkgPiBidXR0b25bY2xhc3MqPScgaWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGFbY2xhc3NePSdpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYVtjbGFzcyo9JyBpY29uLSddW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtW2NsYXNzXj0naWNvbi0nXVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IC5tZW51aXRlbVtjbGFzcyo9JyBpY29uLSddW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICAgIHBhZGRpbmc6IDAgMTRweCAwIDQ0cHg7XFxufVxcbmxpID4gYnV0dG9uW2RhdGEtdi01MTJlYTc2OF06bm90KDpkaXNhYmxlZCk6aG92ZXIsIGxpID4gYnV0dG9uW2RhdGEtdi01MTJlYTc2OF06bm90KDpkaXNhYmxlZCk6Zm9jdXMsIGxpID4gYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLmFjdGl2ZVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGFbZGF0YS12LTUxMmVhNzY4XTpub3QoOmRpc2FibGVkKTpob3ZlcixcXG4gICAgbGkgPiBhW2RhdGEtdi01MTJlYTc2OF06bm90KDpkaXNhYmxlZCk6Zm9jdXMsXFxuICAgIGxpID4gYTpub3QoOmRpc2FibGVkKS5hY3RpdmVbZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW1bZGF0YS12LTUxMmVhNzY4XTpub3QoOmRpc2FibGVkKTpob3ZlcixcXG4gICAgbGkgPiAubWVudWl0ZW1bZGF0YS12LTUxMmVhNzY4XTpub3QoOmRpc2FibGVkKTpmb2N1cyxcXG4gICAgbGkgPiAubWVudWl0ZW06bm90KDpkaXNhYmxlZCkuYWN0aXZlW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG59XFxubGkgPiBidXR0b24uYWN0aW9uW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYS5hY3Rpb25bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW0uYWN0aW9uW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICAgIHBhZGRpbmc6IGluaGVyaXQgIWltcG9ydGFudDtcXG59XFxubGkgPiBidXR0b24gPiBzcGFuW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYSA+IHNwYW5bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW0gPiBzcGFuW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbn1cXG5saSA+IGJ1dHRvbiA+IHBbZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBhID4gcFtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IC5tZW51aXRlbSA+IHBbZGF0YS12LTUxMmVhNzY4XSB7XFxuICAgICAgd2lkdGg6IDE1MHB4O1xcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcXG4gICAgICBwYWRkaW5nOiA4cHggMDtcXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcbmxpID4gYnV0dG9uID4gc2VsZWN0W2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYSA+IHNlbGVjdFtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IC5tZW51aXRlbSA+IHNlbGVjdFtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcXG59XFxubGkgPiBidXR0b25bZGF0YS12LTUxMmVhNzY4XTpub3QoOmVtcHR5KSxcXG4gICAgbGkgPiBhW2RhdGEtdi01MTJlYTc2OF06bm90KDplbXB0eSksXFxuICAgIGxpID4gLm1lbnVpdGVtW2RhdGEtdi01MTJlYTc2OF06bm90KDplbXB0eSkge1xcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDE0cHggIWltcG9ydGFudDtcXG59XFxubGkgPiBidXR0b24gPiBpbWdbZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBhID4gaW1nW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtID4gaW1nW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgIHBhZGRpbmc6IDE0cHg7XFxufVxcbmxpID4gYnV0dG9uID4gaW5wdXQucmFkaW8gKyBsYWJlbFtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGJ1dHRvbiA+IGlucHV0LmNoZWNrYm94ICsgbGFiZWxbZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBhID4gaW5wdXQucmFkaW8gKyBsYWJlbFtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGEgPiBpbnB1dC5jaGVja2JveCArIGxhYmVsW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gLm1lbnVpdGVtID4gaW5wdXQucmFkaW8gKyBsYWJlbFtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IC5tZW51aXRlbSA+IGlucHV0LmNoZWNrYm94ICsgbGFiZWxbZGF0YS12LTUxMmVhNzY4XSB7XFxuICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbn1cXG5saSA+IGJ1dHRvbiA+IGlucHV0LmNoZWNrYm94ICsgbGFiZWxbZGF0YS12LTUxMmVhNzY4XTo6YmVmb3JlLFxcbiAgICBsaSA+IGEgPiBpbnB1dC5jaGVja2JveCArIGxhYmVsW2RhdGEtdi01MTJlYTc2OF06OmJlZm9yZSxcXG4gICAgbGkgPiAubWVudWl0ZW0gPiBpbnB1dC5jaGVja2JveCArIGxhYmVsW2RhdGEtdi01MTJlYTc2OF06OmJlZm9yZSB7XFxuICAgICAgbWFyZ2luOiAtMnB4IDEzcHggMDtcXG59XFxubGkgPiBidXR0b24gPiBpbnB1dC5yYWRpbyArIGxhYmVsW2RhdGEtdi01MTJlYTc2OF06OmJlZm9yZSxcXG4gICAgbGkgPiBhID4gaW5wdXQucmFkaW8gKyBsYWJlbFtkYXRhLXYtNTEyZWE3NjhdOjpiZWZvcmUsXFxuICAgIGxpID4gLm1lbnVpdGVtID4gaW5wdXQucmFkaW8gKyBsYWJlbFtkYXRhLXYtNTEyZWE3NjhdOjpiZWZvcmUge1xcbiAgICAgIG1hcmdpbjogLTJweCAxMnB4IDA7XFxufVxcbmxpID4gYnV0dG9uID4gaW5wdXRbZGF0YS12LTUxMmVhNzY4XTpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9aW1hZ2VdKSxcXG4gICAgbGkgPiBhID4gaW5wdXRbZGF0YS12LTUxMmVhNzY4XTpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9aW1hZ2VdKSxcXG4gICAgbGkgPiAubWVudWl0ZW0gPiBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdOm5vdChbdHlwZT1yYWRpb10pOm5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1pbWFnZV0pIHtcXG4gICAgICB3aWR0aDogMTUwcHg7XFxufVxcbmxpID4gYnV0dG9uIGZvcm1bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBhIGZvcm1bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW0gZm9ybVtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgICAgIC8qIHB1dCBhIHNtYWxsIHNwYWNlIGJldHdlZW4gdGV4dCBhbmQgZm9ybVxcblxcdFxcdFxcdFxcdGlmIHRoZXJlIGlzIGFuIGVsZW1lbnQgYmVmb3JlICovXFxufVxcbmxpID4gYnV0dG9uIGZvcm1bZGF0YS12LTUxMmVhNzY4XTpub3QoOmZpcnN0LWNoaWxkKSxcXG4gICAgICBsaSA+IGEgZm9ybVtkYXRhLXYtNTEyZWE3NjhdOm5vdCg6Zmlyc3QtY2hpbGQpLFxcbiAgICAgIGxpID4gLm1lbnVpdGVtIGZvcm1bZGF0YS12LTUxMmVhNzY4XTpub3QoOmZpcnN0LWNoaWxkKSB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xcbn1cXG5saSA+IGJ1dHRvbiA+IHNwYW4uaGlkZGVuICsgZm9ybVtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGJ1dHRvbiA+IHNwYW5bc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSArIGZvcm1bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiBhID4gc3Bhbi5oaWRkZW4gKyBmb3JtW2RhdGEtdi01MTJlYTc2OF0sXFxuICAgIGxpID4gYSA+IHNwYW5bc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSArIGZvcm1bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW0gPiBzcGFuLmhpZGRlbiArIGZvcm1bZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW0gPiBzcGFuW3N0eWxlKj0nZGlzcGxheTpub25lJ10gKyBmb3JtW2RhdGEtdi01MTJlYTc2OF0ge1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbn1cXG5saSA+IGJ1dHRvbiBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdLFxcbiAgICBsaSA+IGEgaW5wdXRbZGF0YS12LTUxMmVhNzY4XSxcXG4gICAgbGkgPiAubWVudWl0ZW0gaW5wdXRbZGF0YS12LTUxMmVhNzY4XSB7XFxuICAgICAgbWluLXdpZHRoOiA0NHB4O1xcbiAgICAgIG1heC1oZWlnaHQ6IDQwcHg7XFxuICAgICAgLyogdHdpY2UgdGhlIGVsZW1lbnQgbWFyZ2luLXkgKi9cXG4gICAgICBtYXJnaW46IDJweCAwO1xcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xcbn1cXG5saSA+IGJ1dHRvbiBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdOm5vdCg6Zmlyc3QtY2hpbGQpLFxcbiAgICAgIGxpID4gYSBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdOm5vdCg6Zmlyc3QtY2hpbGQpLFxcbiAgICAgIGxpID4gLm1lbnVpdGVtIGlucHV0W2RhdGEtdi01MTJlYTc2OF06bm90KDpmaXJzdC1jaGlsZCkge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcXG59XFxubGk6bm90KC5oaWRkZW4pOm5vdChbc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSk6Zmlyc3Qtb2YtdHlwZSA+IGJ1dHRvbiA+IGZvcm1bZGF0YS12LTUxMmVhNzY4XSwgbGk6bm90KC5oaWRkZW4pOm5vdChbc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSk6Zmlyc3Qtb2YtdHlwZSA+IGJ1dHRvbiA+IGlucHV0W2RhdGEtdi01MTJlYTc2OF0sIGxpOm5vdCguaGlkZGVuKTpub3QoW3N0eWxlKj0nZGlzcGxheTpub25lJ10pOmZpcnN0LW9mLXR5cGUgPiBhID4gZm9ybVtkYXRhLXYtNTEyZWE3NjhdLCBsaTpub3QoLmhpZGRlbik6bm90KFtzdHlsZSo9J2Rpc3BsYXk6bm9uZSddKTpmaXJzdC1vZi10eXBlID4gYSA+IGlucHV0W2RhdGEtdi01MTJlYTc2OF0sIGxpOm5vdCguaGlkZGVuKTpub3QoW3N0eWxlKj0nZGlzcGxheTpub25lJ10pOmZpcnN0LW9mLXR5cGUgPiAubWVudWl0ZW0gPiBmb3JtW2RhdGEtdi01MTJlYTc2OF0sIGxpOm5vdCguaGlkZGVuKTpub3QoW3N0eWxlKj0nZGlzcGxheTpub25lJ10pOmZpcnN0LW9mLXR5cGUgPiAubWVudWl0ZW0gPiBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgbWFyZ2luLXRvcDogMTJweDtcXG59XFxubGk6bm90KC5oaWRkZW4pOm5vdChbc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSk6bGFzdC1vZi10eXBlID4gYnV0dG9uID4gZm9ybVtkYXRhLXYtNTEyZWE3NjhdLCBsaTpub3QoLmhpZGRlbik6bm90KFtzdHlsZSo9J2Rpc3BsYXk6bm9uZSddKTpsYXN0LW9mLXR5cGUgPiBidXR0b24gPiBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdLCBsaTpub3QoLmhpZGRlbik6bm90KFtzdHlsZSo9J2Rpc3BsYXk6bm9uZSddKTpsYXN0LW9mLXR5cGUgPiBhID4gZm9ybVtkYXRhLXYtNTEyZWE3NjhdLCBsaTpub3QoLmhpZGRlbik6bm90KFtzdHlsZSo9J2Rpc3BsYXk6bm9uZSddKTpsYXN0LW9mLXR5cGUgPiBhID4gaW5wdXRbZGF0YS12LTUxMmVhNzY4XSwgbGk6bm90KC5oaWRkZW4pOm5vdChbc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSk6bGFzdC1vZi10eXBlID4gLm1lbnVpdGVtID4gZm9ybVtkYXRhLXYtNTEyZWE3NjhdLCBsaTpub3QoLmhpZGRlbik6bm90KFtzdHlsZSo9J2Rpc3BsYXk6bm9uZSddKTpsYXN0LW9mLXR5cGUgPiAubWVudWl0ZW0gPiBpbnB1dFtkYXRhLXYtNTEyZWE3NjhdIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcXG59XFxubGkgPiBidXR0b25bZGF0YS12LTUxMmVhNzY4XSB7XFxuICAgIHBhZGRpbmc6IDA7XFxufVxcbmxpID4gYnV0dG9uIHNwYW5bZGF0YS12LTUxMmVhNzY4XSB7XFxuICAgICAgb3BhY2l0eTogMTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vUG9wb3Zlck1lbnVJdGVtLnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RURxQkU7QUF1TEY7RUFDQyxhQUFhO0VBQ2IsY0FBYztFQXVKZCxvQ0FBQTtBQUFxQztBQXpKdEM7SUFLRSxhQUFhO0FBQUE7QUFMZjs7O0lBV0UsZUFBZTtJQUNmLGlCQy9MbUI7SURnTW5CLFNBQVM7SUFDVCxnQkFBZ0I7SUFDaEIsNkJBQTZCO0lBQzdCLGFBQWE7SUFDYix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLFNBQVM7SUFDVCxVQUFVO0lBQ1YsbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsNkJBQTZCO0lBQzdCLG1CQUFtQjtJQUNuQixZQzNMaUI7SURxT2pCLDhDQUFBO0lBNEJBLHNDQUFBO0lBS0E7c0JBL1BvQjtJQXNRcEIseUJBQUE7SUEwQkEsb0NBQUE7SUFLQSx3REFBQTtBQUF5RDtBQTNJM0Q7Ozs7Ozs7Ozs7TUFpQ0csWUFBWTtNQUFFLG1CQUFBO01BQ2QsYUFBYTtNQUNiLGdDQUEyQztNQUMzQyxxQkNuTmE7QUFBQTtBRCtLaEI7Ozs7OztNQXlDRztnREF6SzZDO01BMks3Qyx5QkM5TmtCO0FBQUE7QURtTHJCOzs7Ozs7Ozs7TUFvREssaUJDdk9nQjtBQUFBO0FEbUxyQjs7Ozs7TUEyREcsc0JDOU9rQjtBQUFBO0FEbUxyQjs7Ozs7OztNQWlFRyxxQkFBaUM7QUFBQTtBQWpFcEM7OztNQXNFRywyQkFBMkI7QUFBQTtBQXRFOUI7OztNQTBFRyxlQUFlO01BQ2YsbUJBQW1CO0FBQUE7QUEzRXRCOzs7TUFnRkcsWUFBWTtNQUNaLGtCQUFrQjtNQUNsQixjQUFjO01BQ2QsbUJBQW1CO01BR25CLGdCQUFnQjtNQUNoQix1QkFBdUI7QUFBQTtBQXZGMUI7OztNQTRGRyxTQUFTO01BQ1QsZ0JBQWdCO0FBQUE7QUE3Rm5COzs7TUFrR0csOEJBQXNDO0FBQUE7QUFsR3pDOzs7TUF3R0csV0N2UmE7TUR3UmIsYUNwUjZDO0FBQUE7QUQyS2hEOzs7Ozs7TUErR0cscUJBQXFCO01BQ3JCLFdBQVc7QUFBQTtBQWhIZDs7O01BbUhHLG1CQUFtQjtBQUFBO0FBbkh0Qjs7O01Bc0hHLG1CQUFtQjtBQUFBO0FBdEh0Qjs7O01BeUhHLFlBQVk7QUFBQTtBQXpIZjs7O01BOEhHLGFBQWE7TUFDYixjQUFjO01BQ2Q7bUNBNUtnQztBQTZLQztBQWpJcEM7OztRQW1JSSxnQkFBZ0I7QUFBQTtBQW5JcEI7Ozs7OztNQXlJRyxjQUFjO0FBQUE7QUF6SWpCOzs7TUE2SUcsZUNoVWtCO01EaVVsQixnQkFBWTtNQUEwQiwrQkFBQTtNQUN0QyxhQUFhO01BQ2IsY0FBYztBQUFBO0FBaEpqQjs7O1FBbUpJLGdCQUFnQjtBQUFBO0FBbkpwQjtJQThKSyxnQkFBOEI7QUFBQTtBQTlKbkM7SUFxS0ssbUJBQWlDO0FBQUE7QUFyS3RDO0lBMktFLFVBQVU7QUFBQTtBQTNLWjtNQTZLRyxVQzdVYTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5saSB7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4OiAwIDAgYXV0bztcXG5cXG5cXHQmLmhpZGRlbiB7XFxuXFx0XFx0ZGlzcGxheTogbm9uZTtcXG5cXHR9XFxuXFxuXFx0PiBidXR0b24sXFxuXFx0PiBhLFxcblxcdD4gLm1lbnVpdGVtIHtcXG5cXHRcXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0XFx0bGluZS1oZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRib3JkZXI6IDA7XFxuXFx0XFx0Ym9yZGVyLXJhZGl1czogMDsgLy8gb3RoZXJ3aXNlIFNhZmFyaSB3aWxsIGN1dCB0aGUgYm9yZGVyLXJhZGl1cyBhcmVhXFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0ZGlzcGxheTogZmxleDtcXG5cXHRcXHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG5cXHRcXHRoZWlnaHQ6IGF1dG87XFxuXFx0XFx0bWFyZ2luOiAwO1xcblxcdFxcdHBhZGRpbmc6IDA7XFxuXFx0XFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcXG5cXHRcXHRib3gtc2hhZG93OiBub25lO1xcblxcdFxcdHdpZHRoOiAxMDAlO1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcblxcdFxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfbm9ybWFsO1xcblxcblxcdFxcdC8vIFRPRE8gc3BsaXQgaW50byBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZm9yIHJlYWRhYmlsaXR5XFxuXFx0XFx0c3BhbltjbGFzc149J2ljb24tJ10sXFxuXFx0XFx0c3BhbltjbGFzcyo9JyBpY29uLSddLFxcblxcdFxcdCZbY2xhc3NePSdpY29uLSddLFxcblxcdFxcdCZbY2xhc3MqPScgaWNvbi0nXSB7XFxuXFx0XFx0XFx0bWluLXdpZHRoOiAwOyAvKiBPdmVyd3JpdGUgaWNvbnMqL1xcblxcdFxcdFxcdG1pbi1oZWlnaHQ6IDA7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1wb3NpdGlvbjogI3skaWNvbi1tYXJnaW59IGNlbnRlcjtcXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLXNpemU6ICRpY29uLXNpemU7XFxuXFx0XFx0fVxcblxcblxcdFxcdHNwYW5bY2xhc3NePSdpY29uLSddLFxcblxcdFxcdHNwYW5bY2xhc3MqPScgaWNvbi0nXSB7XFxuXFx0XFx0XFx0LyogS2VlcCBwYWRkaW5nIHRvIGRlZmluZSB0aGUgd2lkdGggdG9cXG5cXHRcXHRcXHRcXHRhc3N1cmUgY29ycmVjdCBwb3NpdGlvbiBvZiBhIHBvc3NpYmxlIHRleHQgKi9cXG5cXHRcXHRcXHRwYWRkaW5nOiAjeyRjbGlja2FibGUtYXJlYSAvIDJ9IDAgI3skY2xpY2thYmxlLWFyZWEgLyAyfSAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIElmIG5vIGljb25zIHNldCwgZm9yY2UgbGVmdCBtYXJnaW4gdG8gYWxpZ25cXG5cXHRcXHQmOm5vdChbY2xhc3NePSdpY29uLSddKTpub3QoW2NsYXNzKj0naWNvbi0nXSkge1xcblxcdFxcdFxcdD4gc3BhbixcXG5cXHRcXHRcXHQ+IGlucHV0LFxcblxcdFxcdFxcdD4gZm9ybSB7XFxuXFx0XFx0XFx0XFx0Jjpub3QoW2NsYXNzXj0naWNvbi0nXSk6bm90KFtjbGFzcyo9J2ljb24tJ10pOmZpcnN0LWNoaWxkIHtcXG5cXHRcXHRcXHRcXHRcXHRtYXJnaW4tbGVmdDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdFxcdCZbY2xhc3NePSdpY29uLSddLFxcblxcdFxcdCZbY2xhc3MqPScgaWNvbi0nXSB7XFxuXFx0XFx0XFx0cGFkZGluZzogMCAkaWNvbi1tYXJnaW4gMCAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0fVxcblxcblxcdFxcdCY6bm90KDpkaXNhYmxlZCk6aG92ZXIsXFxuXFx0XFx0Jjpub3QoOmRpc2FibGVkKTpmb2N1cyxcXG5cXHRcXHQmOm5vdCg6ZGlzYWJsZWQpLmFjdGl2ZSB7XFxuXFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbCAhaW1wb3J0YW50O1xcblxcdFxcdH1cXG5cXG5cXHRcXHQvKiBwcmV2ZW50IC5hY3Rpb24gY2xhc3MgdG8gYnJlYWsgdGhlIGRlc2lnbiAqL1xcblxcdFxcdCYuYWN0aW9uIHtcXG5cXHRcXHRcXHRwYWRkaW5nOiBpbmhlcml0ICFpbXBvcnRhbnQ7XFxuXFx0XFx0fVxcblxcblxcdFxcdD4gc3BhbiB7XFxuXFx0XFx0XFx0Y3Vyc29yOiBwb2ludGVyO1xcblxcdFxcdFxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGxvbmcgdGV4dCBhcmVhXFxuXFx0XFx0PiBwIHtcXG5cXHRcXHRcXHR3aWR0aDogMTUwcHg7XFxuXFx0XFx0XFx0bGluZS1oZWlnaHQ6IDEuNmVtO1xcblxcdFxcdFxcdHBhZGRpbmc6IDhweCAwO1xcblxcdFxcdFxcdHdoaXRlLXNwYWNlOiBub3JtYWw7XFxuXFxuXFx0XFx0XFx0Ly8gaW4gY2FzZSB0aGVyZSBhcmUgbm8gc3BhY2VzIGxpa2UgbG9uZyBlbWFpbCBhZGRyZXNzZXNcXG5cXHRcXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBUT0RPOiBkbyB3ZSByZWFsbHkgc3VwcG9ydHMgaXQ/XFxuXFx0XFx0PiBzZWxlY3Qge1xcblxcdFxcdFxcdG1hcmdpbjogMDtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogNnB4O1xcblxcdFxcdH1cXG5cXG5cXHRcXHQvKiBBZGQgcGFkZGluZyBpZiBjb250YWlucyBpY29uK3RleHQgKi9cXG5cXHRcXHQmOm5vdCg6ZW1wdHkpIHtcXG5cXHRcXHRcXHRwYWRkaW5nLXJpZ2h0OiAkaWNvbi1tYXJnaW4gIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0LyogREVQUkVDQVRFRCEgb2xkIGltZyBpbiBwb3BvdmVyIGZhbGxiYWNrXFxuXFx0XFx0XFx0KiBUT0RPOiB0byByZW1vdmUgKi9cXG5cXHRcXHQ+IGltZyB7XFxuXFx0XFx0XFx0d2lkdGg6ICRpY29uLXNpemU7XFxuXFx0XFx0XFx0cGFkZGluZzogJGljb24tbWFyZ2luO1xcblxcdFxcdH1cXG5cXG5cXHRcXHQvKiBjaGVja2JveC9yYWRpbyBmaXhlcyAqL1xcblxcdFxcdD4gaW5wdXQucmFkaW8gKyBsYWJlbCxcXG5cXHRcXHQ+IGlucHV0LmNoZWNrYm94ICsgbGFiZWwge1xcblxcdFxcdFxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG5cXHRcXHRcXHR3aWR0aDogMTAwJTtcXG5cXHRcXHR9XFxuXFx0XFx0PiBpbnB1dC5jaGVja2JveCArIGxhYmVsOjpiZWZvcmUge1xcblxcdFxcdFxcdG1hcmdpbjogLTJweCAxM3B4IDA7XFxuXFx0XFx0fVxcblxcdFxcdD4gaW5wdXQucmFkaW8gKyBsYWJlbDo6YmVmb3JlIHtcXG5cXHRcXHRcXHRtYXJnaW46IC0ycHggMTJweCAwO1xcblxcdFxcdH1cXG5cXHRcXHQ+IGlucHV0Om5vdChbdHlwZT1yYWRpb10pOm5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1pbWFnZV0pIHtcXG5cXHRcXHRcXHR3aWR0aDogMTUwcHg7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIEZvcm1zICYgdGV4dCBpbnB1dHNcXG5cXHRcXHRmb3JtIHtcXG5cXHRcXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdFxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdFxcdFxcdC8qIHB1dCBhIHNtYWxsIHNwYWNlIGJldHdlZW4gdGV4dCBhbmQgZm9ybVxcblxcdFxcdFxcdFxcdGlmIHRoZXJlIGlzIGFuIGVsZW1lbnQgYmVmb3JlICovXFxuXFx0XFx0XFx0Jjpub3QoOmZpcnN0LWNoaWxkKSAge1xcblxcdFxcdFxcdFxcdG1hcmdpbi1sZWZ0OiA1cHg7XFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHRcXHQvKiBubyBtYXJnaW4gaWYgaGlkZGVuIHNwYW4gYmVmb3JlICovXFxuXFx0XFx0PiBzcGFuLmhpZGRlbiArIGZvcm0sXFxuXFx0XFx0PiBzcGFuW3N0eWxlKj0nZGlzcGxheTpub25lJ10gKyBmb3JtIHtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogMDtcXG5cXHRcXHR9XFxuXFx0XFx0LyogSW5wdXRzIGluc2lkZSBwb3BvdmVyIHN1cHBvcnRzIHRleHQsIHN1Ym1pdCAmIHJlc2V0ICovXFxuXFx0XFx0aW5wdXQge1xcblxcdFxcdFxcdG1pbi13aWR0aDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdFxcdG1heC1oZWlnaHQ6ICN7JGNsaWNrYWJsZS1hcmVhIC0gNHB4fTsgLyogdHdpY2UgdGhlIGVsZW1lbnQgbWFyZ2luLXkgKi9cXG5cXHRcXHRcXHRtYXJnaW46IDJweCAwO1xcblxcdFxcdFxcdGZsZXg6IDEgMSBhdXRvO1xcblxcdFxcdFxcdC8vIHNwYWNlIGJldHdlZW4gaW5saW5lIGlucHV0c1xcblxcdFxcdFxcdCY6bm90KDpmaXJzdC1jaGlsZCkge1xcblxcdFxcdFxcdFxcdG1hcmdpbi1sZWZ0OiA1cHg7XFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gVE9ETzogZG8gdGhhdCBpbiBqcywgc2hvdWxkIGJlIGNsZWFuZXJcXG5cXHQvKiBjc3MgaGFjaywgb25seSBmaXJzdCBub3QgaGlkZGVuICovXFxuXFx0Jjpub3QoLmhpZGRlbik6bm90KFtzdHlsZSo9J2Rpc3BsYXk6bm9uZSddKSB7XFxuXFx0XFx0JjpmaXJzdC1vZi10eXBlIHtcXG5cXHRcXHRcXHQ+IGJ1dHRvbiwgPiBhLCA+IC5tZW51aXRlbSB7XFxuXFx0XFx0XFx0XFx0PiBmb3JtLCA+IGlucHV0IHtcXG5cXHRcXHRcXHRcXHRcXHRtYXJnaW4tdG9wOiAkaWNvbi1tYXJnaW4gLSAycHg7IC8vIG1pbnVzIHRoZSBpbnB1dCBtYXJnaW5cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHRcXHQmOmxhc3Qtb2YtdHlwZSB7XFxuXFx0XFx0XFx0PiBidXR0b24sID4gYSwgPiAubWVudWl0ZW0ge1xcblxcdFxcdFxcdFxcdD4gZm9ybSwgPiBpbnB1dCB7XFxuXFx0XFx0XFx0XFx0XFx0bWFyZ2luLWJvdHRvbTogJGljb24tbWFyZ2luIC0gMnB4OyAvLyBtaW51cyB0aGUgaW5wdXQgbWFyZ2luXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0fVxcblxcdD4gYnV0dG9uIHtcXG5cXHRcXHRwYWRkaW5nOiAwO1xcblxcdFxcdHNwYW4ge1xcblxcdFxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Z1bGw7XFxuXFx0XFx0fVxcblxcdH1cXG59XFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuLm1lbnRpb24tYnViYmxlLS1wcmltYXJ5IC5tZW50aW9uLWJ1YmJsZV9fY29udGVudFtkYXRhLXYtNjlmNDBlYzhdIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50KTtcXG59XFxuLm1lbnRpb24tYnViYmxlX193cmFwcGVyW2RhdGEtdi02OWY0MGVjOF0ge1xcbiAgbWF4LXdpZHRoOiAxNTBweDtcXG4gIGhlaWdodDogMThweDtcXG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLm1lbnRpb24tYnViYmxlX19jb250ZW50W2RhdGEtdi02OWY0MGVjOF0ge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMjBweDtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHBhZGRpbmctcmlnaHQ6IDZweDtcXG4gIHBhZGRpbmctbGVmdDogMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFyayk7XFxufVxcbi5tZW50aW9uLWJ1YmJsZV9faWNvbltkYXRhLXYtNjlmNDBlYzhdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxNnB4O1xcbiAgaGVpZ2h0OiAxNnB4O1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrZXIpO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtc2l6ZTogMTJweDtcXG59XFxuLm1lbnRpb24tYnViYmxlX19pY29uLS13aXRoLWF2YXRhcltkYXRhLXYtNjlmNDBlYzhdIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxufVxcbi5tZW50aW9uLWJ1YmJsZV9fdGl0bGVbZGF0YS12LTY5ZjQwZWM4XSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgbWFyZ2luLWxlZnQ6IDJweDtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuLm1lbnRpb24tYnViYmxlX190aXRsZVtkYXRhLXYtNjlmNDBlYzhdOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBhdHRyKHRpdGxlKTtcXG59XFxuLm1lbnRpb24tYnViYmxlX19zZWxlY3RbZGF0YS12LTY5ZjQwZWM4XSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAtMTtcXG4gIGxlZnQ6IC0xMDAwcHg7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL01lbnRpb25CdWJibGUudnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQWlGRDtFQUNDLGdDQUFnQztFQUNoQyw4Q0FBOEM7QUFBQTtBQUcvQztFQUNDLGdCQVhzQjtFQWF0QixZQUF3QztFQUN4QywyQkFBMkI7RUFDM0Isb0JBQW9CO0VBQ3BCLG1CQUFtQjtBQUFBO0FBR3BCO0VBQ0Msb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLFlBekJrQjtFQTBCbEIseUJBQXlCO0VBQ3pCLGlCQUFpQjtFQUNqQixrQkFBa0M7RUFDbEMsaUJBM0JrQjtFQTRCbEIsbUJBQWlDO0VBQ2pDLDhDQUE4QztBQUFBO0FBRy9DO0VBQ0Msa0JBQWtCO0VBQ2xCLFdBakN1RDtFQWtDdkQsWUFsQ3VEO0VBbUN2RCxrQkFBc0M7RUFDdEMsZ0RBQWdEO0VBQ2hELDRCQUE0QjtFQUM1QiwyQkFBMkI7RUFDM0IscUJBQTBEO0FBQUE7QUFFMUQ7SUFDQyxjQUFjO0lBQ2Qsc0JBQXNCO0FBQUE7QUFJeEI7RUFDQyxnQkFBZ0I7RUFDaEIsZ0JBbERrQjtFQW1EbEIsbUJBQW1CO0VBQ25CLHVCQUF1QjtBQUFBO0FBSnZCO0lBT0Msb0JBQW9CO0FBQUE7QUFLdEI7RUFDQyxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLGFBQWE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIkc2NvcGVfdmVyc2lvbjpcXFwiODRjNDYxZlxcXCI7IEBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuJGJ1YmJsZS1oZWlnaHQ6IDIwcHg7XFxuJGJ1YmJsZS1tYXgtd2lkdGg6IDE1MHB4O1xcbiRidWJibGUtcGFkZGluZzogMnB4O1xcbiRidWJibGUtYXZhdGFyLXNpemU6ICRidWJibGUtaGVpZ2h0IC0gMiAqICRidWJibGUtcGFkZGluZztcXG5cXG4ubWVudGlvbi1idWJibGUge1xcblxcdCYtLXByaW1hcnkgJl9fY29udGVudCB7XFxuXFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50KTtcXG5cXHR9XFxuXFxuXFx0Jl9fd3JhcHBlciB7XFxuXFx0XFx0bWF4LXdpZHRoOiAkYnViYmxlLW1heC13aWR0aDtcXG5cXHRcXHQvLyBBbGlnbiB3aXRoIHRleHRcXG5cXHRcXHRoZWlnaHQ6ICRidWJibGUtaGVpZ2h0IC0gJGJ1YmJsZS1wYWRkaW5nO1xcblxcdFxcdHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcXG5cXHRcXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG5cXHRcXHRhbGlnbi1pdGVtczogY2VudGVyO1xcblxcdH1cXG5cXG5cXHQmX19jb250ZW50IHtcXG5cXHRcXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG5cXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0XFx0bWF4LXdpZHRoOiAxMDAlO1xcblxcdFxcdGhlaWdodDogJGJ1YmJsZS1oZWlnaHQgO1xcblxcdFxcdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0XFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0XFx0cGFkZGluZy1yaWdodDogJGJ1YmJsZS1wYWRkaW5nICogMztcXG5cXHRcXHRwYWRkaW5nLWxlZnQ6ICRidWJibGUtcGFkZGluZztcXG5cXHRcXHRib3JkZXItcmFkaXVzOiAkYnViYmxlLWhlaWdodCAvIDI7XFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrKTtcXG5cXHR9XFxuXFxuXFx0Jl9faWNvbiB7XFxuXFx0XFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdFxcdHdpZHRoOiAkYnViYmxlLWF2YXRhci1zaXplO1xcblxcdFxcdGhlaWdodDogJGJ1YmJsZS1hdmF0YXItc2l6ZTtcXG5cXHRcXHRib3JkZXItcmFkaXVzOiAkYnViYmxlLWF2YXRhci1zaXplIC8gMjtcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmtlcik7XFxuXFx0XFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG5cXHRcXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxuXFx0XFx0YmFja2dyb3VuZC1zaXplOiAkYnViYmxlLWF2YXRhci1zaXplIC0gMiAqICRidWJibGUtcGFkZGluZztcXG5cXG5cXHRcXHQmLS13aXRoLWF2YXRhciB7XFxuXFx0XFx0XFx0Y29sb3I6IGluaGVyaXQ7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdCZfX3RpdGxlIHtcXG5cXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdG1hcmdpbi1sZWZ0OiAkYnViYmxlLXBhZGRpbmc7XFxuXFx0XFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHRcXHQvLyBQdXQgbGFiZWwgaW4gOjpiZWZvcmUgc28gaXQgaXMgbm90IHNlbGVjdGFibGVcXG5cXHRcXHQmOjpiZWZvcmUge1xcblxcdFxcdFxcdGNvbnRlbnQ6IGF0dHIodGl0bGUpO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gSGlkZSB0aGUgbWVudGlvbiBpZCBzbyBpdCBpcyBzZWxlY3RhYmxlXFxuXFx0Jl9fc2VsZWN0IHtcXG5cXHRcXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFx0XFx0ei1pbmRleDogLTE7XFxuXFx0XFx0bGVmdDogLTEwMDBweDtcXG5cXHR9XFxufVxcblxcblwiLFwiLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuXFxuLy8gaHR0cHM6Ly91eHBsYW5ldC5vcmcvNy1ydWxlcy1mb3ItbW9iaWxlLXVpLWJ1dHRvbi1kZXNpZ24tZTljZjJlYTU0NTU2XFxuLy8gcmVjb21tZW5kZWQgaXMgNDhweFxcbi8vIDQ0cHggaXMgd2hhdCB3ZSBjaG9vc2UgYW5kIGhhdmUgdmVyeSBnb29kIHZpc3VhbC10by11c2FiaWxpdHkgcmF0aW9cXG4kY2xpY2thYmxlLWFyZWE6IDQ0cHg7XFxuXFxuLy8gYmFja2dyb3VuZCBpY29uIHNpemVcXG4vLyBhbHNvIHVzZWQgZm9yIHRoZSBzY3NzIGljb24gZm9udFxcbiRpY29uLXNpemU6IDE2cHg7XFxuXFxuLy8gaWNvbiBwYWRkaW5nIGZvciBhICRjbGlja2FibGUtYXJlYSB3aWR0aCBhbmQgYSAkaWNvbi1zaXplIGljb25cXG4vLyAoIDQ0cHggLSAxNnB4ICkgLyAyXFxuJGljb24tbWFyZ2luOiAoJGNsaWNrYWJsZS1hcmVhIC0gJGljb24tc2l6ZSkgLyAyO1xcblxcbi8vIHRyYW5zcGFyZW5jeSBiYWNrZ3JvdW5kIGZvciBpY29uc1xcbiRpY29uLWZvY3VzLWJnOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gcG9wb3Zlcm1lbnUgYXJyb3cgd2lkdGggZnJvbSB0aGUgdHJpYW5nbGUgY2VudGVyXFxuJGFycm93LXdpZHRoOiA5cHg7XFxuXFxuLy8gb3BhY2l0aWVzXFxuJG9wYWNpdHlfZGlzYWJsZWQ6IC41O1xcbiRvcGFjaXR5X25vcm1hbDogLjc7XFxuJG9wYWNpdHlfZnVsbDogMTtcXG5cXG4vLyBtZW51IHJvdW5kIGJhY2tncm91bmQgaG92ZXIgZmVlZGJhY2tcXG4vLyBnb29kIGxvb2tpbmcgb24gZGFyayBBTkQgd2hpdGUgYmdcXG4kYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyB2YXJpb3VzIHN0cnVjdHVyZSBkYXRhIHVzZWQgaW4gdGhlIFxcbi8vIGBBcHBOYXZpZ2F0aW9uYCBjb21wb25lbnRcXG4kaGVhZGVyLWhlaWdodDogNTBweDtcXG4kbmF2aWdhdGlvbi13aWR0aDogMzAwcHg7XFxuXFxuLy8gbW9iaWxlIGJyZWFrcG9pbnRcXG4kYnJlYWtwb2ludC1tb2JpbGU6IDEwMjRweDtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG5idXR0b24ubWVudWl0ZW1bZGF0YS12LTUxMmVhNzY4XSB7XFxuXFx0dGV4dC1hbGlnbjogbGVmdDtcXG59XFxuYnV0dG9uLm1lbnVpdGVtICpbZGF0YS12LTUxMmVhNzY4XSB7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5idXR0b24ubWVudWl0ZW1bZGF0YS12LTUxMmVhNzY4XTpkaXNhYmxlZCB7XFxuXFx0b3BhY2l0eTogMC41ICFpbXBvcnRhbnQ7XFxuXFx0Y3Vyc29yOiBkZWZhdWx0O1xcbn1cXG5idXR0b24ubWVudWl0ZW06ZGlzYWJsZWQgKltkYXRhLXYtNTEyZWE3NjhdIHtcXG5cXHRjdXJzb3I6IGRlZmF1bHQ7XFxufVxcbi5tZW51aXRlbS5hY3RpdmVbZGF0YS12LTUxMmVhNzY4XSB7XFxuXFx0Ym94LXNoYWRvdzogaW5zZXQgMnB4IDAgdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vUG9wb3Zlck1lbnVJdGVtLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBbUxBO0NBQ0EsZ0JBQUE7QUFDQTtBQUVBO0NBQ0EsZUFBQTtBQUNBO0FBRUE7Q0FDQSx1QkFBQTtDQUNBLGVBQUE7QUFDQTtBQUVBO0NBQ0EsZUFBQTtBQUNBO0FBRUE7Q0FDQSw0Q0FBQTtDQUNBLGdCQUFBO0FBQ0FcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPCEtLVxcbiAgLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICAtXFxuICAtIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAgLVxcbiAgLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gIC1cXG4gIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICAtXFxuICAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAgLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAgLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcXG4gIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICAtXFxuICAtIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAgLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAgLVxcbiAgLS0+XFxuXFxuPHRlbXBsYXRlPlxcblxcdDxsaSBjbGFzcz1cXFwicG9wb3Zlcl9fbWVudWl0ZW1cXFwiPlxcblxcdFxcdDwhLS0gSWYgaXRlbS5ocmVmIGlzIHNldCwgYSBsaW5rIHdpbGwgYmUgZGlyZWN0bHkgdXNlZCAtLT5cXG5cXHRcXHQ8YSB2LWlmPVxcXCJpdGVtLmhyZWZcXFwiXFxuXFx0XFx0XFx0OmhyZWY9XFxcIihpdGVtLmhyZWYpID8gaXRlbS5ocmVmIDogJyMnIFxcXCJcXG5cXHRcXHRcXHQ6dGFyZ2V0PVxcXCIoaXRlbS50YXJnZXQpID8gaXRlbS50YXJnZXQgOiAnJyBcXFwiXFxuXFx0XFx0XFx0OmRvd25sb2FkPVxcXCJpdGVtLmRvd25sb2FkXFxcIlxcblxcdFxcdFxcdGNsYXNzPVxcXCJmb2N1c2FibGVcXFwiXFxuXFx0XFx0XFx0cmVsPVxcXCJub3JlZmVycmVyIG5vb3BlbmVyXFxcIlxcblxcdFxcdFxcdEBjbGljaz1cXFwiYWN0aW9uXFxcIj5cXG5cXHRcXHRcXHQ8c3BhbiB2LWlmPVxcXCIhaWNvbklzVXJsXFxcIiA6Y2xhc3M9XFxcIml0ZW0uaWNvblxcXCIgLz5cXG5cXHRcXHRcXHQ8aW1nIHYtZWxzZSA6c3JjPVxcXCJpdGVtLmljb25cXFwiPlxcblxcdFxcdFxcdDxwIHYtaWY9XFxcIml0ZW0udGV4dCAmJiBpdGVtLmxvbmd0ZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHQ8c3Ryb25nIGNsYXNzPVxcXCJtZW51aXRlbS10ZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHR7eyBpdGVtLnRleHQgfX1cXG5cXHRcXHRcXHRcXHQ8L3N0cm9uZz48YnI+XFxuXFx0XFx0XFx0XFx0PHNwYW4gY2xhc3M9XFxcIm1lbnVpdGVtLXRleHQtZGV0YWlsXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHR7eyBpdGVtLmxvbmd0ZXh0IH19XFxuXFx0XFx0XFx0XFx0PC9zcGFuPlxcblxcdFxcdFxcdDwvcD5cXG5cXHRcXHRcXHQ8c3BhbiB2LWVsc2UtaWY9XFxcIml0ZW0udGV4dFxcXCI+XFxuXFx0XFx0XFx0XFx0e3sgaXRlbS50ZXh0IH19XFxuXFx0XFx0XFx0PC9zcGFuPlxcblxcdFxcdFxcdDxwIHYtZWxzZS1pZj1cXFwiaXRlbS5sb25ndGV4dFxcXCI+XFxuXFx0XFx0XFx0XFx0e3sgaXRlbS5sb25ndGV4dCB9fVxcblxcdFxcdFxcdDwvcD5cXG5cXHRcXHQ8L2E+XFxuXFxuXFx0XFx0PCEtLSBJZiBpdGVtLmlucHV0IGlzIHNldCBpbnN0ZWFkLCBhbiBwdXQgd2lsbCBiZSB1c2VkIC0tPlxcblxcdFxcdDxzcGFuIHYtZWxzZS1pZj1cXFwiaXRlbS5pbnB1dFxcXCIgY2xhc3M9XFxcIm1lbnVpdGVtXFxcIiA6Y2xhc3M9XFxcInthY3RpdmU6IGl0ZW0uYWN0aXZlfVxcXCI+XFxuXFx0XFx0XFx0PCEtLSBkb2VzIG5vdCBzaG93IGlmIGlucHV0IGlzIGNoZWNrYm94IC0tPlxcblxcdFxcdFxcdDxzcGFuIHYtaWY9XFxcIml0ZW0uaW5wdXQgIT09ICdjaGVja2JveCdcXFwiIDpjbGFzcz1cXFwiaXRlbS5pY29uXFxcIiAvPlxcblxcblxcdFxcdFxcdDwhLS0gb25seSBzaG93cyBpZiBpbnB1dCBpcyB0ZXh0IC0tPlxcblxcdFxcdFxcdDxmb3JtIHYtaWY9XFxcIml0ZW0uaW5wdXQgPT09ICd0ZXh0J1xcXCJcXG5cXHRcXHRcXHRcXHQ6Y2xhc3M9XFxcIml0ZW0uaW5wdXRcXFwiXFxuXFx0XFx0XFx0XFx0QHN1Ym1pdC5wcmV2ZW50PVxcXCJpdGVtLmFjdGlvblxcXCI+XFxuXFx0XFx0XFx0XFx0PGlucHV0IDp0eXBlPVxcXCJpdGVtLmlucHV0XFxcIlxcblxcdFxcdFxcdFxcdFxcdDp2YWx1ZT1cXFwiaXRlbS52YWx1ZVxcXCJcXG5cXHRcXHRcXHRcXHRcXHQ6cGxhY2Vob2xkZXI9XFxcIml0ZW0udGV4dFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRyZXF1aXJlZD5cXG5cXHRcXHRcXHRcXHQ8aW5wdXQgdHlwZT1cXFwic3VibWl0XFxcIiB2YWx1ZT1cXFwiXFxcIiBjbGFzcz1cXFwiaWNvbi1jb25maXJtXFxcIj5cXG5cXHRcXHRcXHQ8L2Zvcm0+XFxuXFxuXFx0XFx0XFx0PCEtLSBjaGVja2JveCAtLT5cXG5cXHRcXHRcXHQ8dGVtcGxhdGUgdi1lbHNlPlxcblxcdFxcdFxcdFxcdDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIC0tPlxcblxcdFxcdFxcdFxcdDxpbnB1dCA6aWQ9XFxcImtleVxcXCIgdi1tb2RlbD1cXFwiaXRlbS5tb2RlbFxcXCJcXG5cXHRcXHRcXHRcXHRcXHQ6dHlwZT1cXFwiaXRlbS5pbnB1dFxcXCJcXG5cXHRcXHRcXHRcXHRcXHQ6Y2xhc3M9XFxcIml0ZW0uaW5wdXRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0QGNoYW5nZT1cXFwiaXRlbS5hY3Rpb25cXFwiPlxcblxcdFxcdFxcdFxcdDxsYWJlbCA6Zm9yPVxcXCJrZXlcXFwiIEBjbGljay5zdG9wLnByZXZlbnQ9XFxcIml0ZW0uYWN0aW9uXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHR7eyBpdGVtLnRleHQgfX1cXG5cXHRcXHRcXHRcXHQ8L2xhYmVsPlxcblxcdFxcdFxcdDwvdGVtcGxhdGU+XFxuXFx0XFx0PC9zcGFuPlxcblxcblxcdFxcdDwhLS0gSWYgaXRlbS5hY3Rpb24gaXMgc2V0IGluc3RlYWQsIGEgYnV0dG9uIHdpbGwgYmUgdXNlZCAtLT5cXG5cXHRcXHQ8YnV0dG9uIHYtZWxzZS1pZj1cXFwiaXRlbS5hY3Rpb25cXFwiXFxuXFx0XFx0XFx0Y2xhc3M9XFxcIm1lbnVpdGVtIGZvY3VzYWJsZVxcXCJcXG5cXHRcXHRcXHQ6Y2xhc3M9XFxcInthY3RpdmU6IGl0ZW0uYWN0aXZlfVxcXCJcXG5cXHRcXHRcXHQ6ZGlzYWJsZWQ9XFxcIml0ZW0uZGlzYWJsZWRcXFwiXFxuXFx0XFx0XFx0QGNsaWNrLnN0b3AucHJldmVudD1cXFwiaXRlbS5hY3Rpb25cXFwiPlxcblxcdFxcdFxcdDxzcGFuIDpjbGFzcz1cXFwiaXRlbS5pY29uXFxcIiAvPlxcblxcdFxcdFxcdDxwIHYtaWY9XFxcIml0ZW0udGV4dCAmJiBpdGVtLmxvbmd0ZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHQ8c3Ryb25nIGNsYXNzPVxcXCJtZW51aXRlbS10ZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHR7eyBpdGVtLnRleHQgfX1cXG5cXHRcXHRcXHRcXHQ8L3N0cm9uZz48YnI+XFxuXFx0XFx0XFx0XFx0PHNwYW4gY2xhc3M9XFxcIm1lbnVpdGVtLXRleHQtZGV0YWlsXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHR7eyBpdGVtLmxvbmd0ZXh0IH19XFxuXFx0XFx0XFx0XFx0PC9zcGFuPlxcblxcdFxcdFxcdDwvcD5cXG5cXHRcXHRcXHQ8c3BhbiB2LWVsc2UtaWY9XFxcIml0ZW0udGV4dFxcXCI+XFxuXFx0XFx0XFx0XFx0e3sgaXRlbS50ZXh0IH19XFxuXFx0XFx0XFx0PC9zcGFuPlxcblxcdFxcdFxcdDxwIHYtZWxzZS1pZj1cXFwiaXRlbS5sb25ndGV4dFxcXCI+XFxuXFx0XFx0XFx0XFx0e3sgaXRlbS5sb25ndGV4dCB9fVxcblxcdFxcdFxcdDwvcD5cXG5cXHRcXHQ8L2J1dHRvbj5cXG5cXG5cXHRcXHQ8IS0tIElmIGl0ZW0ubG9uZ3RleHQgaXMgc2V0IEFORCB0aGUgaXRlbSBkb2VzIG5vdCBoYXZlIGFuIGFjdGlvbiAtLT5cXG5cXHRcXHQ8c3BhbiB2LWVsc2UgY2xhc3M9XFxcIm1lbnVpdGVtXFxcIiA6Y2xhc3M9XFxcInthY3RpdmU6IGl0ZW0uYWN0aXZlfVxcXCI+XFxuXFx0XFx0XFx0PHNwYW4gOmNsYXNzPVxcXCJpdGVtLmljb25cXFwiIC8+XFxuXFx0XFx0XFx0PHAgdi1pZj1cXFwiaXRlbS50ZXh0ICYmIGl0ZW0ubG9uZ3RleHRcXFwiPlxcblxcdFxcdFxcdFxcdDxzdHJvbmcgY2xhc3M9XFxcIm1lbnVpdGVtLXRleHRcXFwiPlxcblxcdFxcdFxcdFxcdFxcdHt7IGl0ZW0udGV4dCB9fVxcblxcdFxcdFxcdFxcdDwvc3Ryb25nPjxicj5cXG5cXHRcXHRcXHRcXHQ8c3BhbiBjbGFzcz1cXFwibWVudWl0ZW0tdGV4dC1kZXRhaWxcXFwiPlxcblxcdFxcdFxcdFxcdFxcdHt7IGl0ZW0ubG9uZ3RleHQgfX1cXG5cXHRcXHRcXHRcXHQ8L3NwYW4+XFxuXFx0XFx0XFx0PC9wPlxcblxcdFxcdFxcdDxzcGFuIHYtZWxzZS1pZj1cXFwiaXRlbS50ZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHR7eyBpdGVtLnRleHQgfX1cXG5cXHRcXHRcXHQ8L3NwYW4+XFxuXFx0XFx0XFx0PHAgdi1lbHNlLWlmPVxcXCJpdGVtLmxvbmd0ZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHR7eyBpdGVtLmxvbmd0ZXh0IH19XFxuXFx0XFx0XFx0PC9wPlxcblxcdFxcdDwvc3Bhbj5cXG5cXHQ8L2xpPlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdD5cXG5leHBvcnQgZGVmYXVsdCB7XFxuXFx0bmFtZTogJ1BvcG92ZXJNZW51SXRlbScsXFxuXFx0cHJvcHM6IHtcXG5cXHRcXHRpdGVtOiB7XFxuXFx0XFx0XFx0dHlwZTogT2JqZWN0LFxcblxcdFxcdFxcdHJlcXVpcmVkOiB0cnVlLFxcblxcdFxcdFxcdGRlZmF1bHQ6ICgpID0+IHtcXG5cXHRcXHRcXHRcXHRyZXR1cm4ge1xcblxcdFxcdFxcdFxcdFxcdGtleTogJ25leHRjbG91ZC1saW5rJyxcXG5cXHRcXHRcXHRcXHRcXHRocmVmOiAnaHR0cHM6Ly9uZXh0Y2xvdWQuY29tJyxcXG5cXHRcXHRcXHRcXHRcXHRpY29uOiAnaWNvbi1saW5rcycsXFxuXFx0XFx0XFx0XFx0XFx0dGV4dDogJ05leHRjbG91ZCcsXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0Ly8gY2hlY2sgdGhlIGlucHV0IHR5cGVzXFxuXFx0XFx0XFx0Ly8gVE9ETzogYWRkIG1vcmUgdmFsaWRhdGlvbiBvZiB0eXBlc1xcblxcdFxcdFxcdHZhbGlkYXRvcjogaXRlbSA9PiB7XFxuXFx0XFx0XFx0XFx0Ly8gVE9ETzogc3VwcG9ydCByYWRpb1xcblxcdFxcdFxcdFxcdGlmIChpdGVtLmlucHV0KSB7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFsndGV4dCcsICdjaGVja2JveCddLmluZGV4T2YoaXRlbS5pbnB1dCkgIT09IC0xXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdHJldHVybiB0cnVlXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHR9LFxcblxcdH0sXFxuXFx0Y29tcHV0ZWQ6IHtcXG5cXHRcXHQvLyByYW5kb20ga2V5IGZvciBpbnB1dHMgYmluZGluZyBpZiBub3QgcHJvdmlkZWRcXG5cXHRcXHRrZXkoKSB7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuaXRlbS5rZXlcXG5cXHRcXHRcXHRcXHQ/IHRoaXMuaXRlbS5rZXlcXG5cXHRcXHRcXHRcXHQ6IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDE2ICogMTAwMDAwMCkudG9TdHJpbmcoMTYpXFxuXFx0XFx0fSxcXG5cXHRcXHRpY29uSXNVcmwoKSB7XFxuXFx0XFx0XFx0dHJ5IHtcXG5cXHRcXHRcXHRcXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3XFxuXFx0XFx0XFx0XFx0bmV3IFVSTCh0aGlzLml0ZW0uaWNvbilcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZVxcblxcdFxcdFxcdH0gY2F0Y2ggKF8pIHtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2VcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHR9LFxcblxcdG1ldGhvZHM6IHtcXG5cXHRcXHQvLyBhbGxvdyB1cyB0byB1c2UgYm90aCBsaW5rIGFuZCBhbiBhY3Rpb24gb24gYGFgXFxuXFx0XFx0Ly8gd2Ugc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUgaXRlbS5hY3Rpb24gZXhpc3RzXFxuXFx0XFx0YWN0aW9uKGV2ZW50KSB7XFxuXFx0XFx0XFx0aWYgKHRoaXMuaXRlbS5hY3Rpb24pIHtcXG5cXHRcXHRcXHRcXHR0aGlzLml0ZW0uYWN0aW9uKGV2ZW50KVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdH0sXFxufVxcbjwvc2NyaXB0PlxcblxcbjxzdHlsZSBzY29wZWQ+XFxuXFx0YnV0dG9uLm1lbnVpdGVtIHtcXG5cXHRcXHR0ZXh0LWFsaWduOiBsZWZ0O1xcblxcdH1cXG5cXG5cXHRidXR0b24ubWVudWl0ZW0gKiB7XFxuXFx0XFx0Y3Vyc29yOiBwb2ludGVyO1xcblxcdH1cXG5cXG5cXHRidXR0b24ubWVudWl0ZW06ZGlzYWJsZWQge1xcblxcdFxcdG9wYWNpdHk6IDAuNSAhaW1wb3J0YW50O1xcblxcdFxcdGN1cnNvcjogZGVmYXVsdDtcXG5cXHR9XFxuXFxuXFx0YnV0dG9uLm1lbnVpdGVtOmRpc2FibGVkICoge1xcblxcdFxcdGN1cnNvcjogZGVmYXVsdDtcXG5cXHR9XFxuXFxuXFx0Lm1lbnVpdGVtLmFjdGl2ZSB7XFxuXFx0XFx0Ym94LXNoYWRvdzogaW5zZXQgMnB4IDAgdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuXFx0XFx0Ym9yZGVyLXJhZGl1czogMDtcXG5cXHR9XFxuPC9zdHlsZT5cXG5cXG48c3R5bGUgbGFuZz1cXFwic2Nzc1xcXCIgc2NvcGVkPlxcbmxpIHtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXg6IDAgMCBhdXRvO1xcblxcblxcdCYuaGlkZGVuIHtcXG5cXHRcXHRkaXNwbGF5OiBub25lO1xcblxcdH1cXG5cXG5cXHQ+IGJ1dHRvbixcXG5cXHQ+IGEsXFxuXFx0PiAubWVudWl0ZW0ge1xcblxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRsaW5lLWhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdGJvcmRlcjogMDtcXG5cXHRcXHRib3JkZXItcmFkaXVzOiAwOyAvLyBvdGhlcndpc2UgU2FmYXJpIHdpbGwgY3V0IHRoZSBib3JkZXItcmFkaXVzIGFyZWFcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcblxcdFxcdGhlaWdodDogYXV0bztcXG5cXHRcXHRtYXJnaW46IDA7XFxuXFx0XFx0cGFkZGluZzogMDtcXG5cXHRcXHRmb250LXdlaWdodDogbm9ybWFsO1xcblxcdFxcdGJveC1zaGFkb3c6IG5vbmU7XFxuXFx0XFx0d2lkdGg6IDEwMCU7XFxuXFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuXFx0XFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9ub3JtYWw7XFxuXFxuXFx0XFx0Ly8gVE9ETyBzcGxpdCBpbnRvIGluZGl2aWR1YWwgY29tcG9uZW50cyBmb3IgcmVhZGFiaWxpdHlcXG5cXHRcXHRzcGFuW2NsYXNzXj0naWNvbi0nXSxcXG5cXHRcXHRzcGFuW2NsYXNzKj0nIGljb24tJ10sXFxuXFx0XFx0JltjbGFzc149J2ljb24tJ10sXFxuXFx0XFx0JltjbGFzcyo9JyBpY29uLSddIHtcXG5cXHRcXHRcXHRtaW4td2lkdGg6IDA7IC8qIE92ZXJ3cml0ZSBpY29ucyovXFxuXFx0XFx0XFx0bWluLWhlaWdodDogMDtcXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAjeyRpY29uLW1hcmdpbn0gY2VudGVyO1xcblxcdFxcdFxcdGJhY2tncm91bmQtc2l6ZTogJGljb24tc2l6ZTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0c3BhbltjbGFzc149J2ljb24tJ10sXFxuXFx0XFx0c3BhbltjbGFzcyo9JyBpY29uLSddIHtcXG5cXHRcXHRcXHQvKiBLZWVwIHBhZGRpbmcgdG8gZGVmaW5lIHRoZSB3aWR0aCB0b1xcblxcdFxcdFxcdFxcdGFzc3VyZSBjb3JyZWN0IHBvc2l0aW9uIG9mIGEgcG9zc2libGUgdGV4dCAqL1xcblxcdFxcdFxcdHBhZGRpbmc6ICN7JGNsaWNrYWJsZS1hcmVhIC8gMn0gMCAjeyRjbGlja2FibGUtYXJlYSAvIDJ9ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gSWYgbm8gaWNvbnMgc2V0LCBmb3JjZSBsZWZ0IG1hcmdpbiB0byBhbGlnblxcblxcdFxcdCY6bm90KFtjbGFzc149J2ljb24tJ10pOm5vdChbY2xhc3MqPSdpY29uLSddKSB7XFxuXFx0XFx0XFx0PiBzcGFuLFxcblxcdFxcdFxcdD4gaW5wdXQsXFxuXFx0XFx0XFx0PiBmb3JtIHtcXG5cXHRcXHRcXHRcXHQmOm5vdChbY2xhc3NePSdpY29uLSddKTpub3QoW2NsYXNzKj0naWNvbi0nXSk6Zmlyc3QtY2hpbGQge1xcblxcdFxcdFxcdFxcdFxcdG1hcmdpbi1sZWZ0OiAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0XFx0JltjbGFzc149J2ljb24tJ10sXFxuXFx0XFx0JltjbGFzcyo9JyBpY29uLSddIHtcXG5cXHRcXHRcXHRwYWRkaW5nOiAwICRpY29uLW1hcmdpbiAwICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Jjpub3QoOmRpc2FibGVkKTpob3ZlcixcXG5cXHRcXHQmOm5vdCg6ZGlzYWJsZWQpOmZvY3VzLFxcblxcdFxcdCY6bm90KDpkaXNhYmxlZCkuYWN0aXZlIHtcXG5cXHRcXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsICFpbXBvcnRhbnQ7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8qIHByZXZlbnQgLmFjdGlvbiBjbGFzcyB0byBicmVhayB0aGUgZGVzaWduICovXFxuXFx0XFx0Ji5hY3Rpb24ge1xcblxcdFxcdFxcdHBhZGRpbmc6IGluaGVyaXQgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0PiBzcGFuIHtcXG5cXHRcXHRcXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0XFx0XFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gbG9uZyB0ZXh0IGFyZWFcXG5cXHRcXHQ+IHAge1xcblxcdFxcdFxcdHdpZHRoOiAxNTBweDtcXG5cXHRcXHRcXHRsaW5lLWhlaWdodDogMS42ZW07XFxuXFx0XFx0XFx0cGFkZGluZzogOHB4IDA7XFxuXFx0XFx0XFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcXG5cXG5cXHRcXHRcXHQvLyBpbiBjYXNlIHRoZXJlIGFyZSBubyBzcGFjZXMgbGlrZSBsb25nIGVtYWlsIGFkZHJlc3Nlc1xcblxcdFxcdFxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0XFx0XFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIFRPRE86IGRvIHdlIHJlYWxseSBzdXBwb3J0cyBpdD9cXG5cXHRcXHQ+IHNlbGVjdCB7XFxuXFx0XFx0XFx0bWFyZ2luOiAwO1xcblxcdFxcdFxcdG1hcmdpbi1sZWZ0OiA2cHg7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8qIEFkZCBwYWRkaW5nIGlmIGNvbnRhaW5zIGljb24rdGV4dCAqL1xcblxcdFxcdCY6bm90KDplbXB0eSkge1xcblxcdFxcdFxcdHBhZGRpbmctcmlnaHQ6ICRpY29uLW1hcmdpbiAhaW1wb3J0YW50O1xcblxcdFxcdH1cXG5cXG5cXHRcXHQvKiBERVBSRUNBVEVEISBvbGQgaW1nIGluIHBvcG92ZXIgZmFsbGJhY2tcXG5cXHRcXHRcXHQqIFRPRE86IHRvIHJlbW92ZSAqL1xcblxcdFxcdD4gaW1nIHtcXG5cXHRcXHRcXHR3aWR0aDogJGljb24tc2l6ZTtcXG5cXHRcXHRcXHRwYWRkaW5nOiAkaWNvbi1tYXJnaW47XFxuXFx0XFx0fVxcblxcblxcdFxcdC8qIGNoZWNrYm94L3JhZGlvIGZpeGVzICovXFxuXFx0XFx0PiBpbnB1dC5yYWRpbyArIGxhYmVsLFxcblxcdFxcdD4gaW5wdXQuY2hlY2tib3ggKyBsYWJlbCB7XFxuXFx0XFx0XFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdHdpZHRoOiAxMDAlO1xcblxcdFxcdH1cXG5cXHRcXHQ+IGlucHV0LmNoZWNrYm94ICsgbGFiZWw6OmJlZm9yZSB7XFxuXFx0XFx0XFx0bWFyZ2luOiAtMnB4IDEzcHggMDtcXG5cXHRcXHR9XFxuXFx0XFx0PiBpbnB1dC5yYWRpbyArIGxhYmVsOjpiZWZvcmUge1xcblxcdFxcdFxcdG1hcmdpbjogLTJweCAxMnB4IDA7XFxuXFx0XFx0fVxcblxcdFxcdD4gaW5wdXQ6bm90KFt0eXBlPXJhZGlvXSk6bm90KFt0eXBlPWNoZWNrYm94XSk6bm90KFt0eXBlPWltYWdlXSkge1xcblxcdFxcdFxcdHdpZHRoOiAxNTBweDtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gRm9ybXMgJiB0ZXh0IGlucHV0c1xcblxcdFxcdGZvcm0ge1xcblxcdFxcdFxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0XFx0XFx0ZmxleDogMSAxIGF1dG87XFxuXFx0XFx0XFx0LyogcHV0IGEgc21hbGwgc3BhY2UgYmV0d2VlbiB0ZXh0IGFuZCBmb3JtXFxuXFx0XFx0XFx0XFx0aWYgdGhlcmUgaXMgYW4gZWxlbWVudCBiZWZvcmUgKi9cXG5cXHRcXHRcXHQmOm5vdCg6Zmlyc3QtY2hpbGQpICB7XFxuXFx0XFx0XFx0XFx0bWFyZ2luLWxlZnQ6IDVweDtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdFxcdC8qIG5vIG1hcmdpbiBpZiBoaWRkZW4gc3BhbiBiZWZvcmUgKi9cXG5cXHRcXHQ+IHNwYW4uaGlkZGVuICsgZm9ybSxcXG5cXHRcXHQ+IHNwYW5bc3R5bGUqPSdkaXNwbGF5Om5vbmUnXSArIGZvcm0ge1xcblxcdFxcdFxcdG1hcmdpbi1sZWZ0OiAwO1xcblxcdFxcdH1cXG5cXHRcXHQvKiBJbnB1dHMgaW5zaWRlIHBvcG92ZXIgc3VwcG9ydHMgdGV4dCwgc3VibWl0ICYgcmVzZXQgKi9cXG5cXHRcXHRpbnB1dCB7XFxuXFx0XFx0XFx0bWluLXdpZHRoOiAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0XFx0bWF4LWhlaWdodDogI3skY2xpY2thYmxlLWFyZWEgLSA0cHh9OyAvKiB0d2ljZSB0aGUgZWxlbWVudCBtYXJnaW4teSAqL1xcblxcdFxcdFxcdG1hcmdpbjogMnB4IDA7XFxuXFx0XFx0XFx0ZmxleDogMSAxIGF1dG87XFxuXFx0XFx0XFx0Ly8gc3BhY2UgYmV0d2VlbiBpbmxpbmUgaW5wdXRzXFxuXFx0XFx0XFx0Jjpub3QoOmZpcnN0LWNoaWxkKSB7XFxuXFx0XFx0XFx0XFx0bWFyZ2luLWxlZnQ6IDVweDtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQvLyBUT0RPOiBkbyB0aGF0IGluIGpzLCBzaG91bGQgYmUgY2xlYW5lclxcblxcdC8qIGNzcyBoYWNrLCBvbmx5IGZpcnN0IG5vdCBoaWRkZW4gKi9cXG5cXHQmOm5vdCguaGlkZGVuKTpub3QoW3N0eWxlKj0nZGlzcGxheTpub25lJ10pIHtcXG5cXHRcXHQmOmZpcnN0LW9mLXR5cGUge1xcblxcdFxcdFxcdD4gYnV0dG9uLCA+IGEsID4gLm1lbnVpdGVtIHtcXG5cXHRcXHRcXHRcXHQ+IGZvcm0sID4gaW5wdXQge1xcblxcdFxcdFxcdFxcdFxcdG1hcmdpbi10b3A6ICRpY29uLW1hcmdpbiAtIDJweDsgLy8gbWludXMgdGhlIGlucHV0IG1hcmdpblxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdFxcdCY6bGFzdC1vZi10eXBlIHtcXG5cXHRcXHRcXHQ+IGJ1dHRvbiwgPiBhLCA+IC5tZW51aXRlbSB7XFxuXFx0XFx0XFx0XFx0PiBmb3JtLCA+IGlucHV0IHtcXG5cXHRcXHRcXHRcXHRcXHRtYXJnaW4tYm90dG9tOiAkaWNvbi1tYXJnaW4gLSAycHg7IC8vIG1pbnVzIHRoZSBpbnB1dCBtYXJnaW5cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHR9XFxuXFx0PiBidXR0b24ge1xcblxcdFxcdHBhZGRpbmc6IDA7XFxuXFx0XFx0c3BhbiB7XFxuXFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcXG5cXHRcXHR9XFxuXFx0fVxcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGUsIG5vLXBhcmFtLXJlYXNzaWduXG5cblxuICB1cmwgPSB1cmwgJiYgdXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybDtcblxuICBpZiAodHlwZW9mIHVybCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB1cmw7XG4gIH0gLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG5cblxuICBpZiAoL15bJ1wiXS4qWydcIl0kLy50ZXN0KHVybCkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICB1cmwgPSB1cmwuc2xpY2UoMSwgLTEpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIHVybCArPSBvcHRpb25zLmhhc2g7XG4gIH0gLy8gU2hvdWxkIHVybCBiZSB3cmFwcGVkP1xuICAvLyBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMtMy8jdXJsc1xuXG5cbiAgaWYgKC9bXCInKCkgXFx0XFxuXS8udGVzdCh1cmwpIHx8IG9wdGlvbnMubmVlZFF1b3Rlcykge1xuICAgIHJldHVybiBcIlxcXCJcIi5jb25jYXQodXJsLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKS5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKSwgXCJcXFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn07IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0F2YXRhci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xMDBlM2I2ZiZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xpc3RJdGVtSWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03ZmU5NWE4ZiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0VsbGlwc2lzZWRPcHRpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDI2YzNkZWYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlck1lbnUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGEwZWI3MTkmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTEyZWE3NjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NZW50aW9uQnViYmxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY5ZjQwZWM4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BvcG92ZXJNZW51SXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01MTJlYTc2OCZzY29wZWQ9dHJ1ZSZsYW5nPWNzcyZcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbnZhciBzdHlsZXNJbkRvbSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRG9tW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM11cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiBhZGRTdHlsZShvYmosIG9wdGlvbnMpLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB2YXIgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMubm9uY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJyA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICAgIGlmIChub25jZSkge1xuICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zLmluc2VydChzdHlsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChvcHRpb25zLmluc2VydCB8fCAnaGVhZCcpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxudmFyIHJlcGxhY2VUZXh0ID0gZnVuY3Rpb24gcmVwbGFjZVRleHQoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcGxhY2UoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICB9O1xufSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLm1lZGlhID8gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKS5jb25jYXQob2JqLmNzcywgXCJ9XCIpIDogb2JqLmNzczsgLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlLCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3M7XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYTtcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGUuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXIgc2luZ2xldG9uQ291bnRlciA9IDA7XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgc3R5bGU7XG4gIHZhciB1cGRhdGU7XG4gIHZhciByZW1vdmU7XG5cbiAgaWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG4gICAgc3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZSA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlKG9iaik7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZShuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4gIC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcblxuICBpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG4gIH1cblxuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ld0xpc3QpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRG9tW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRvbVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRvbS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBfdm0uX2coXG4gICAgICB7XG4gICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInRvb2x0aXBcIixcbiAgICAgICAgICAgIHJhd05hbWU6IFwidi10b29sdGlwXCIsXG4gICAgICAgICAgICB2YWx1ZTogX3ZtLnRvb2x0aXAsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcInRvb2x0aXBcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjbGljay1vdXRzaWRlXCIsXG4gICAgICAgICAgICByYXdOYW1lOiBcInYtY2xpY2stb3V0c2lkZVwiLFxuICAgICAgICAgICAgdmFsdWU6IF92bS5jbG9zZU1lbnUsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcImNsb3NlTWVudVwiXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdGF0aWNDbGFzczogXCJhdmF0YXJkaXYgcG9wb3Zlcm1lbnUtd3JhcHBlclwiLFxuICAgICAgICBjbGFzczoge1xuICAgICAgICAgIFwiYXZhdGFyZGl2LS11bmtub3duXCI6IF92bS51c2VyRG9lc05vdEV4aXN0LFxuICAgICAgICAgIFwiYXZhdGFyZGl2LS13aXRoLW1lbnVcIjogX3ZtLmhhc01lbnVcbiAgICAgICAgfSxcbiAgICAgICAgc3R5bGU6IF92bS5hdmF0YXJTdHlsZVxuICAgICAgfSxcbiAgICAgICFfdm0uZGlzYWJsZU1lbnUgPyB7IGNsaWNrOiBfdm0udG9nZ2xlTWVudSB9IDoge31cbiAgICApLFxuICAgIFtcbiAgICAgIF92bS5pY29uQ2xhc3NcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImF2YXRhci1jbGFzcy1pY29uXCIsIGNsYXNzOiBfdm0uaWNvbkNsYXNzIH0pXG4gICAgICAgIDogX3ZtLmlzQXZhdGFyTG9hZGVkICYmICFfdm0udXNlckRvZXNOb3RFeGlzdFxuICAgICAgICA/IF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHNyYzogX3ZtLmF2YXRhclVybExvYWRlZCxcbiAgICAgICAgICAgICAgc3Jjc2V0OiBfdm0uYXZhdGFyU3JjU2V0TG9hZGVkLFxuICAgICAgICAgICAgICBhbHQ6IFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5oYXNNZW51XG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcIlBvcG92ZXJcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogX3ZtLm1lbnVDb250YWluZXIsXG4gICAgICAgICAgICAgICAgb3BlbjogX3ZtLmNvbnRhY3RzTWVudU9wZW5TdGF0ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIlBvcG92ZXJNZW51XCIsIHsgYXR0cnM6IHsgbWVudTogX3ZtLm1lbnUgfSB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwidHJpZ2dlclwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogX3ZtLmNvbnRhY3RzTWVudUxvYWRpbmcgPyBcImljb24tbG9hZGluZ1wiIDogXCJpY29uLW1vcmVcIixcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiBfdm0uc2l6ZSArIFwicHhcIiwgaGVpZ2h0OiBfdm0uc2l6ZSArIFwicHhcIiB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5zaG93VXNlclN0YXR1c0ljb25PbkF2YXRhclxuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhdGFyZGl2X191c2VyLXN0YXR1cyBhdmF0YXJkaXZfX3VzZXItc3RhdHVzLS1pY29uXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbX3ZtLl92KFwiXFxuXFx0XFx0XCIgKyBfdm0uX3MoX3ZtLnVzZXJTdGF0dXMuaWNvbikgKyBcIlxcblxcdFwiKV1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLmNhbkRpc3BsYXlVc2VyU3RhdHVzXG4gICAgICAgID8gX2MoXCJkaXZcIiwge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhdGFyZGl2X191c2VyLXN0YXR1c1wiLFxuICAgICAgICAgICAgY2xhc3M6IFwiYXZhdGFyZGl2X191c2VyLXN0YXR1cy0tXCIgKyBfdm0udXNlclN0YXR1cy5zdGF0dXNcbiAgICAgICAgICB9KVxuICAgICAgICA6IF92bS5zdGF0dXNcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImF2YXRhcmRpdl9fc3RhdHVzXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiBcImF2YXRhcmRpdl9fc3RhdHVzLS1cIiArIF92bS5zdGF0dXMsXG4gICAgICAgICAgICAgIHN0eWxlOiB7IGJhY2tncm91bmRDb2xvcjogXCIjXCIgKyBfdm0uc3RhdHVzQ29sb3IgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLnN0YXR1cyA9PT0gXCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcInN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjExXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94OiBcIjAgMCAzLjE3NSAyLjkxXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInBhdGhcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgZmlsbDogXCIjXCIgKyBfdm0uc3RhdHVzQ29sb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IFwiTTMuMjEgMy4wNDNILjQ5NGwuNjc5LTEuMTc3LjY4LTEuMTc2LjY3OCAxLjE3NnpcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBcIiNmZmZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIuMjY1XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJzcXVhcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS51c2VyRG9lc05vdEV4aXN0ICYmICFfdm0uaWNvbkNsYXNzXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1bmtub3duXCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KFwiXFxuXFx0XFx0XCIgKyBfdm0uX3MoX3ZtLmluaXRpYWxzKSArIFwiXFxuXFx0XCIpXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInNwYW5cIixcbiAgICBfdm0uX2coXG4gICAgICB7IHN0YXRpY0NsYXNzOiBcIm9wdGlvblwiLCBzdHlsZTogX3ZtLmNzc1ZhcnMsIGF0dHJzOiB7IGlkOiBfdm0uaWQgfSB9LFxuICAgICAgX3ZtLiRsaXN0ZW5lcnNcbiAgICApLFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcIkF2YXRhclwiLFxuICAgICAgICBfdm0uX2IoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwib3B0aW9uX19hdmF0YXJcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIFwiZGlzYWJsZS1tZW51XCI6IHRydWUsXG4gICAgICAgICAgICAgIFwiZGlzYWJsZS10b29sdGlwXCI6IHRydWUsXG4gICAgICAgICAgICAgIFwiZGlzcGxheS1uYW1lXCI6IF92bS5kaXNwbGF5TmFtZSB8fCBfdm0udGl0bGUsXG4gICAgICAgICAgICAgIFwiaXMtbm8tdXNlclwiOiBfdm0uaXNOb1VzZXIsXG4gICAgICAgICAgICAgIHNpemU6IF92bS5hdmF0YXJTaXplXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIkF2YXRhclwiLFxuICAgICAgICAgIF92bS4kYXR0cnMsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJvcHRpb25fX2RldGFpbHNcIiB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJIaWdobGlnaHRcIiwge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwib3B0aW9uX19saW5lb25lXCIsXG4gICAgICAgICAgICBhdHRyczogeyB0ZXh0OiBfdm0udGl0bGUsIHNlYXJjaDogX3ZtLnNlYXJjaCB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uaXNWYWxpZFN1YnRpdGxlICYmIF92bS5pc1NpemVCaWdFbm91Z2hcbiAgICAgICAgICAgID8gX2MoXCJIaWdobGlnaHRcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm9wdGlvbl9fbGluZXR3b1wiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHRleHQ6IF92bS5zdWJ0aXRsZSwgc2VhcmNoOiBfdm0uc2VhcmNoIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogX3ZtLmhhc1N0YXR1c1xuICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhfdm0udXNlclN0YXR1cy5pY29uKSldKSxcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCBbX3ZtLl92KF92bS5fcyhfdm0udXNlclN0YXR1cy5tZXNzYWdlKSldKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fdChcImRlZmF1bHRcIiksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLmhhc0ljb24gJiYgIV92bS5oYXNTbG90XG4gICAgICAgID8gX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwiaWNvbiBvcHRpb25fX2ljb25cIiwgY2xhc3M6IF92bS5pY29uIH0pXG4gICAgICAgIDogX3ZtLl9lKClcbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcIm5hbWUtcGFydHNcIiwgYXR0cnM6IHsgdGl0bGU6IF92bS5uYW1lIH0gfSxcbiAgICBbXG4gICAgICBfYyhcIkhpZ2hsaWdodFwiLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcIm5hbWUtcGFydHNfX2ZpcnN0XCIsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgdGV4dDogX3ZtLnBhcnQxLFxuICAgICAgICAgIHNlYXJjaDogX3ZtLnNlYXJjaCxcbiAgICAgICAgICBoaWdobGlnaHQ6IF92bS5oaWdobGlnaHQxXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5wYXJ0MlxuICAgICAgICA/IF9jKFwiSGlnaGxpZ2h0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm5hbWUtcGFydHNfX2xhc3RcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHRleHQ6IF92bS5wYXJ0MixcbiAgICAgICAgICAgICAgc2VhcmNoOiBfdm0uc2VhcmNoLFxuICAgICAgICAgICAgICBoaWdobGlnaHQ6IF92bS5oaWdobGlnaHQyXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgOiBfdm0uX2UoKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcIlZ1ZU11bHRpc2VsZWN0XCIsXG4gICAgX3ZtLl9nKFxuICAgICAgX3ZtLl9iKFxuICAgICAgICB7XG4gICAgICAgICAgcmVmOiBcIlZ1ZU11bHRpc2VsZWN0XCIsXG4gICAgICAgICAgY2xhc3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfdm0ubXVsdGlwbGUgPyBcIm11bHRpc2VsZWN0LS1tdWx0aXBsZVwiIDogXCJtdWx0aXNlbGVjdC0tc2luZ2xlXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBvcHRpb25zOiBfdm0ub3B0aW9ucyxcbiAgICAgICAgICAgIGxpbWl0OiBfdm0ubWF4T3B0aW9ucyxcbiAgICAgICAgICAgIFwiY2xvc2Utb24tc2VsZWN0XCI6ICFfdm0ubXVsdGlwbGUsXG4gICAgICAgICAgICBtdWx0aXBsZTogX3ZtLm11bHRpcGxlLFxuICAgICAgICAgICAgbGFiZWw6IF92bS5sYWJlbCxcbiAgICAgICAgICAgIFwidHJhY2stYnlcIjogX3ZtLnRyYWNrQnksXG4gICAgICAgICAgICBcInRhZy1wbGFjZWhvbGRlclwiOiBcImNyZWF0ZVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzY29wZWRTbG90czogX3ZtLl91KFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbihzY29wZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLnVzZXJTZWxlY3QgJiYgIV92bS4kc2NvcGVkU2xvdHNbXCJvcHRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxpc3RJdGVtSWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNjb3BlLm9wdGlvbltfdm0ubGFiZWxdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IHNjb3BlLnNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJMaXN0SXRlbUljb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5vcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIDogIV92bS4kc2NvcGVkU2xvdHNbXCJvcHRpb25cIl1cbiAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiRWxsaXBzaXNlZE9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogX3ZtLmdldE9wdGlvbkxhYmVsKHNjb3BlLm9wdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiBzY29wZS5vcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiBzY29wZS5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF92bS5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl90KFwib3B0aW9uXCIsIG51bGwsIG51bGwsIHNjb3BlKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgX3ZtLm11bHRpcGxlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJsaW1pdFwiLFxuICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJ0b29sdGlwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi10b29sdGlwLmF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5mb3JtYXRMaW1pdFRpdGxlKF92bS52YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiZm9ybWF0TGltaXRUaXRsZSh2YWx1ZSlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7IGF1dG86IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXVsdGlzZWxlY3RfX2xpbWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XFx0XCIgKyBfdm0uX3MoX3ZtLmxpbWl0U3RyaW5nKSArIFwiXFxuXFx0XFx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHByb3h5OiB0cnVlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICBfdm0uX2woX3ZtLiRzY29wZWRTbG90cywgZnVuY3Rpb24oXywgc2xvdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBrZXk6IHNsb3QsXG4gICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24oc2NvcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdm0uX3Qoc2xvdCwgbnVsbCwgbnVsbCwgc2NvcGUpXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICksXG4gICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgIHZhbHVlOiBfdm0ubG9jYWxWYWx1ZSxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgX3ZtLmxvY2FsVmFsdWUgPSAkJHZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcImxvY2FsVmFsdWVcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJWdWVNdWx0aXNlbGVjdFwiLFxuICAgICAgICBfdm0uJGF0dHJzLFxuICAgICAgICBmYWxzZVxuICAgICAgKSxcbiAgICAgIF92bS4kbGlzdGVuZXJzXG4gICAgKSxcbiAgICBbXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcInNwYW5cIiwgeyBhdHRyczogeyBzbG90OiBcIm5vUmVzdWx0XCIgfSwgc2xvdDogXCJub1Jlc3VsdFwiIH0sIFtcbiAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcIk5vIHJlc3VsdHNcIikpKVxuICAgICAgXSlcbiAgICBdXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiVlBvcG92ZXJcIixcbiAgICBfdm0uX2coXG4gICAgICBfdm0uX2IoXG4gICAgICAgIHtcbiAgICAgICAgICByZWY6IFwicG9wb3ZlclwiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBcInBvcG92ZXItYmFzZS1jbGFzc1wiOiBcInBvcG92ZXJcIixcbiAgICAgICAgICAgIFwicG9wb3Zlci13cmFwcGVyLWNsYXNzXCI6IFwicG9wb3Zlcl9fd3JhcHBlclwiLFxuICAgICAgICAgICAgXCJwb3BvdmVyLWFycm93LWNsYXNzXCI6IFwicG9wb3Zlcl9fYXJyb3dcIixcbiAgICAgICAgICAgIFwicG9wb3Zlci1pbm5lci1jbGFzc1wiOiBcInBvcG92ZXJfX2lubmVyXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiVlBvcG92ZXJcIixcbiAgICAgICAgX3ZtLiRhdHRycyxcbiAgICAgICAgZmFsc2VcbiAgICAgICksXG4gICAgICBfdm0uJGxpc3RlbmVyc1xuICAgICksXG4gICAgW1xuICAgICAgX3ZtLl90KFwidHJpZ2dlclwiKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcInRlbXBsYXRlXCIsIHsgc2xvdDogXCJwb3BvdmVyXCIgfSwgW192bS5fdChcImRlZmF1bHRcIildLCAyKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInVsXCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJwb3BvdmVyX19tZW51XCIgfSxcbiAgICBfdm0uX2woX3ZtLm1lbnUsIGZ1bmN0aW9uKGl0ZW0sIGtleSkge1xuICAgICAgcmV0dXJuIF9jKFwiUG9wb3Zlck1lbnVJdGVtXCIsIHsga2V5OiBrZXksIGF0dHJzOiB7IGl0ZW06IGl0ZW0gfSB9KVxuICAgIH0pLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJsaVwiLCB7IHN0YXRpY0NsYXNzOiBcInBvcG92ZXJfX21lbnVpdGVtXCIgfSwgW1xuICAgIF92bS5pdGVtLmhyZWZcbiAgICAgID8gX2MoXG4gICAgICAgICAgXCJhXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiZm9jdXNhYmxlXCIsXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBocmVmOiBfdm0uaXRlbS5ocmVmID8gX3ZtLml0ZW0uaHJlZiA6IFwiI1wiLFxuICAgICAgICAgICAgICB0YXJnZXQ6IF92bS5pdGVtLnRhcmdldCA/IF92bS5pdGVtLnRhcmdldCA6IFwiXCIsXG4gICAgICAgICAgICAgIGRvd25sb2FkOiBfdm0uaXRlbS5kb3dubG9hZCxcbiAgICAgICAgICAgICAgcmVsOiBcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uYWN0aW9uIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgICFfdm0uaWNvbklzVXJsXG4gICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIHsgY2xhc3M6IF92bS5pdGVtLmljb24gfSlcbiAgICAgICAgICAgICAgOiBfYyhcImltZ1wiLCB7IGF0dHJzOiB7IHNyYzogX3ZtLml0ZW0uaWNvbiB9IH0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF92bS5pdGVtLnRleHQgJiYgX3ZtLml0ZW0ubG9uZ3RleHRcbiAgICAgICAgICAgICAgPyBfYyhcInBcIiwgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJzdHJvbmdcIiwgeyBzdGF0aWNDbGFzczogXCJtZW51aXRlbS10ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcXHRcIiArIF92bS5fcyhfdm0uaXRlbS50ZXh0KSArIFwiXFxuXFx0XFx0XFx0XCIpXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwiYnJcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwibWVudWl0ZW0tdGV4dC1kZXRhaWxcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICBcIlxcblxcdFxcdFxcdFxcdFwiICsgX3ZtLl9zKF92bS5pdGVtLmxvbmd0ZXh0KSArIFwiXFxuXFx0XFx0XFx0XCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF92bS5pdGVtLnRleHRcbiAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuXFx0XFx0XFx0XCIgKyBfdm0uX3MoX3ZtLml0ZW0udGV4dCkgKyBcIlxcblxcdFxcdFwiKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDogX3ZtLml0ZW0ubG9uZ3RleHRcbiAgICAgICAgICAgICAgPyBfYyhcInBcIiwgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuXFx0XFx0XFx0XCIgKyBfdm0uX3MoX3ZtLml0ZW0ubG9uZ3RleHQpICsgXCJcXG5cXHRcXHRcIilcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgXVxuICAgICAgICApXG4gICAgICA6IF92bS5pdGVtLmlucHV0XG4gICAgICA/IF9jKFxuICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibWVudWl0ZW1cIiwgY2xhc3M6IHsgYWN0aXZlOiBfdm0uaXRlbS5hY3RpdmUgfSB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF92bS5pdGVtLmlucHV0ICE9PSBcImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgPyBfYyhcInNwYW5cIiwgeyBjbGFzczogX3ZtLml0ZW0uaWNvbiB9KVxuICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF92bS5pdGVtLmlucHV0ID09PSBcInRleHRcIlxuICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgXCJmb3JtXCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBfdm0uaXRlbS5pbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uaXRlbS5hY3Rpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IF92bS5pdGVtLmlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS5pdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5pdGVtLnZhbHVlIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwic3VibWl0XCIsIHZhbHVlOiBcIlwiIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgX3ZtLml0ZW0uaW5wdXQgPT09IFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaXRlbS5tb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIml0ZW0ubW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IF92bS5pdGVtLmlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IF92bS5rZXksIHR5cGU6IFwiY2hlY2tib3hcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogQXJyYXkuaXNBcnJheShfdm0uaXRlbS5tb2RlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5faShfdm0uaXRlbS5tb2RlbCwgbnVsbCkgPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLml0ZW0ubW9kZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkJGEgPSBfdm0uaXRlbS5tb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJGVsLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPCAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCRhLmNvbmNhdChbJCR2XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJGkgPiAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAkJGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5pdGVtLCBcIm1vZGVsXCIsICQkYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5pdGVtLmFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uaXRlbS5pbnB1dCA9PT0gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5pdGVtLm1vZGVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiaXRlbS5tb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogX3ZtLml0ZW0uaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogX3ZtLmtleSwgdHlwZTogXCJyYWRpb1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyBjaGVja2VkOiBfdm0uX3EoX3ZtLml0ZW0ubW9kZWwsIG51bGwpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uJHNldChfdm0uaXRlbSwgXCJtb2RlbFwiLCBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLml0ZW0uYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uaXRlbS5tb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIml0ZW0ubW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IF92bS5pdGVtLmlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IF92bS5rZXksIHR5cGU6IF92bS5pdGVtLmlucHV0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLml0ZW0ubW9kZWwgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogX3ZtLml0ZW0uYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLml0ZW0sIFwibW9kZWxcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBmb3I6IF92bS5rZXkgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5pdGVtLmFjdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBfdm0uX3MoX3ZtLml0ZW0udGV4dCkgKyBcIlxcblxcdFxcdFxcdFwiKV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgXSxcbiAgICAgICAgICAyXG4gICAgICAgIClcbiAgICAgIDogX3ZtLml0ZW0uYWN0aW9uXG4gICAgICA/IF9jKFxuICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWVudWl0ZW0gZm9jdXNhYmxlXCIsXG4gICAgICAgICAgICBjbGFzczogeyBhY3RpdmU6IF92bS5pdGVtLmFjdGl2ZSB9LFxuICAgICAgICAgICAgYXR0cnM6IHsgZGlzYWJsZWQ6IF92bS5pdGVtLmRpc2FibGVkIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLml0ZW0uYWN0aW9uKCRldmVudClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgY2xhc3M6IF92bS5pdGVtLmljb24gfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX3ZtLml0ZW0udGV4dCAmJiBfdm0uaXRlbS5sb25ndGV4dFxuICAgICAgICAgICAgICA/IF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICBfYyhcInN0cm9uZ1wiLCB7IHN0YXRpY0NsYXNzOiBcIm1lbnVpdGVtLXRleHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIlxcblxcdFxcdFxcdFxcdFwiICsgX3ZtLl9zKF92bS5pdGVtLnRleHQpICsgXCJcXG5cXHRcXHRcXHRcIilcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJiclwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJtZW51aXRlbS10ZXh0LWRldGFpbFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBfdm0uX3MoX3ZtLml0ZW0ubG9uZ3RleHQpICsgXCJcXG5cXHRcXHRcXHRcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDogX3ZtLml0ZW0udGV4dFxuICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcIiArIF92bS5fcyhfdm0uaXRlbS50ZXh0KSArIFwiXFxuXFx0XFx0XCIpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiBfdm0uaXRlbS5sb25ndGV4dFxuICAgICAgICAgICAgICA/IF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcIiArIF92bS5fcyhfdm0uaXRlbS5sb25ndGV4dCkgKyBcIlxcblxcdFxcdFwiKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgIDogX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtZW51aXRlbVwiLCBjbGFzczogeyBhY3RpdmU6IF92bS5pdGVtLmFjdGl2ZSB9IH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHsgY2xhc3M6IF92bS5pdGVtLmljb24gfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX3ZtLml0ZW0udGV4dCAmJiBfdm0uaXRlbS5sb25ndGV4dFxuICAgICAgICAgICAgICA/IF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICBfYyhcInN0cm9uZ1wiLCB7IHN0YXRpY0NsYXNzOiBcIm1lbnVpdGVtLXRleHRcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIlxcblxcdFxcdFxcdFxcdFwiICsgX3ZtLl9zKF92bS5pdGVtLnRleHQpICsgXCJcXG5cXHRcXHRcXHRcIilcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX2MoXCJiclwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJtZW51aXRlbS10ZXh0LWRldGFpbFwiIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XFx0XFx0XCIgKyBfdm0uX3MoX3ZtLml0ZW0ubG9uZ3RleHQpICsgXCJcXG5cXHRcXHRcXHRcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDogX3ZtLml0ZW0udGV4dFxuICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcIiArIF92bS5fcyhfdm0uaXRlbS50ZXh0KSArIFwiXFxuXFx0XFx0XCIpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgOiBfdm0uaXRlbS5sb25ndGV4dFxuICAgICAgICAgICAgICA/IF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcIiArIF92bS5fcyhfdm0uaXRlbS5sb25ndGV4dCkgKyBcIlxcblxcdFxcdFwiKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwic3BhblwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcIm1lbnRpb24tYnViYmxlXCIsXG4gICAgICBjbGFzczogeyBcIm1lbnRpb24tYnViYmxlLS1wcmltYXJ5XCI6IF92bS5wcmltYXJ5IH0sXG4gICAgICBhdHRyczogeyBjb250ZW50ZWRpdGFibGU6IFwiZmFsc2VcIiB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJtZW50aW9uLWJ1YmJsZV9fd3JhcHBlclwiIH0sIFtcbiAgICAgICAgX2MoXCJzcGFuXCIsIHsgc3RhdGljQ2xhc3M6IFwibWVudGlvbi1idWJibGVfX2NvbnRlbnRcIiB9LCBbXG4gICAgICAgICAgX2MoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1lbnRpb24tYnViYmxlX19pY29uXCIsXG4gICAgICAgICAgICBjbGFzczogW1xuICAgICAgICAgICAgICBfdm0uaWNvbixcbiAgICAgICAgICAgICAgXCJtZW50aW9uLWJ1YmJsZV9faWNvbi0tXCIgKyAoX3ZtLmF2YXRhclVybCA/IFwid2l0aC1hdmF0YXJcIiA6IFwiXCIpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3R5bGU6IF92bS5hdmF0YXJVcmxcbiAgICAgICAgICAgICAgPyB7IGJhY2tncm91bmRJbWFnZTogXCJ1cmwoXCIgKyBfdm0uYXZhdGFyVXJsICsgXCIpXCIgfVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtZW50aW9uLWJ1YmJsZV9fdGl0bGVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7IHJvbGU6IFwiaGVhZGluZ1wiLCB0aXRsZTogX3ZtLmxhYmVsIH1cbiAgICAgICAgICB9KVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtZW50aW9uLWJ1YmJsZV9fc2VsZWN0XCIsIGF0dHJzOiB7IHJvbGU6IFwibm9uZVwiIH0gfSxcbiAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0ubWVudGlvblRleHQpKV1cbiAgICAgICAgKVxuICAgICAgXSlcbiAgICBdXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKG9wdGlvbnMuZnVuY3Rpb25hbCA/IHRoaXMucGFyZW50IDogdGhpcykuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdFxuICAgICAgICApXG4gICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BdmF0YXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwMGUzYjZmJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0F2YXRhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0F2YXRhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQXZhdGFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTEwMGUzYjZmJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMTAwZTNiNmZcIixcbiAgbnVsbFxuICBcbilcblxuLyogY3VzdG9tIGJsb2NrcyAqL1xuaW1wb3J0IGJsb2NrMCBmcm9tIFwiLi9BdmF0YXIudnVlP3Z1ZSZ0eXBlPWN1c3RvbSZpbmRleD0wJmJsb2NrVHlwZT1kb2NzXCJcbmlmICh0eXBlb2YgYmxvY2swID09PSAnZnVuY3Rpb24nKSBibG9jazAoY29tcG9uZW50KVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcxMDBlM2I2ZicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcxMDBlM2I2ZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcxMDBlM2I2ZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXZhdGFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMDBlM2I2ZiZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCcxMDBlM2I2ZicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvQXZhdGFyL0F2YXRhci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXZhdGFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0F2YXRhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BdmF0YXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTAwZTNiNmYmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0F2YXRhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTAwZTNiNmYmc2NvcGVkPXRydWUmXCIiLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEp1bGl1cyBIw6RydGwgPGp1c0BiaXRncmlkLm5ldD5cbiAqXG4gKiBAYXV0aG9yIEp1bGl1cyBIw6RydGwgPGp1c0BiaXRncmlkLm5ldD5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmltcG9ydCBBdmF0YXIgZnJvbSAnLi9BdmF0YXInXG5cbmV4cG9ydCBkZWZhdWx0IEF2YXRhclxuIiwidmFyIHJlbmRlciwgc3RhdGljUmVuZGVyRm5zXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hpZ2hsaWdodC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0hpZ2hsaWdodC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBjdXN0b20gYmxvY2tzICovXG5pbXBvcnQgYmxvY2swIGZyb20gXCIuL0hpZ2hsaWdodC52dWU/dnVlJnR5cGU9Y3VzdG9tJmluZGV4PTAmYmxvY2tUeXBlPWRvY3NcIlxuaWYgKHR5cGVvZiBibG9jazAgPT09ICdmdW5jdGlvbicpIGJsb2NrMChjb21wb25lbnQpXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzhmMDA0MzBlJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzhmMDA0MzBlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzhmMDA0MzBlJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIFxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9jb21wb25lbnRzL0hpZ2hsaWdodC9IaWdobGlnaHQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0hpZ2hsaWdodC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9IaWdobGlnaHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAyMCBSYWltdW5kIFNjaGzDvMOfbGVyIDxyYWltdW5kLnNjaGx1ZXNzbGVyQG1haWxib3gub3JnPlxuICpcbiAqIEBhdXRob3IgUmFpbXVuZCBTY2hsw7zDn2xlciA8cmFpbXVuZC5zY2hsdWVzc2xlckBtYWlsYm94Lm9yZz5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cblxuaW1wb3J0IEhpZ2hsaWdodCBmcm9tICcuL0hpZ2hsaWdodCdcblxuZXhwb3J0IGRlZmF1bHQgSGlnaGxpZ2h0XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0xpc3RJdGVtSWNvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2ZlOTVhOGYmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGlzdEl0ZW1JY29uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGlzdEl0ZW1JY29uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9MaXN0SXRlbUljb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9N2ZlOTVhOGYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI3ZmU5NWE4ZlwiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBjdXN0b20gYmxvY2tzICovXG5pbXBvcnQgYmxvY2swIGZyb20gXCIuL0xpc3RJdGVtSWNvbi52dWU/dnVlJnR5cGU9Y3VzdG9tJmluZGV4PTAmYmxvY2tUeXBlPWRvY3NcIlxuaWYgKHR5cGVvZiBibG9jazAgPT09ICdmdW5jdGlvbicpIGJsb2NrMChjb21wb25lbnQpXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzdmZTk1YThmJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzdmZTk1YThmJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzdmZTk1YThmJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9MaXN0SXRlbUljb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmZTk1YThmJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzdmZTk1YThmJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9MaXN0SXRlbUljb24vTGlzdEl0ZW1JY29uLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9MaXN0SXRlbUljb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdEl0ZW1JY29uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xpc3RJdGVtSWNvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03ZmU5NWE4ZiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTGlzdEl0ZW1JY29uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZmU5NWE4ZiZzY29wZWQ9dHJ1ZSZcIiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMjAgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgTGlzdEl0ZW1JY29uIGZyb20gJy4vTGlzdEl0ZW1JY29uJ1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0SXRlbUljb25cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vRWxsaXBzaXNlZE9wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDI2YzNkZWYmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWxsaXBzaXNlZE9wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VsbGlwc2lzZWRPcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0VsbGlwc2lzZWRPcHRpb24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDI2YzNkZWYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIwMjZjM2RlZlwiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcwMjZjM2RlZicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcwMjZjM2RlZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcwMjZjM2RlZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRWxsaXBzaXNlZE9wdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDI2YzNkZWYmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMDI2YzNkZWYnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9jb21wb25lbnRzL011bHRpc2VsZWN0L0VsbGlwc2lzZWRPcHRpb24udnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0VsbGlwc2lzZWRPcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRWxsaXBzaXNlZE9wdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9FbGxpcHNpc2VkT3B0aW9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAyNmMzZGVmJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9FbGxpcHNpc2VkT3B0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMjZjM2RlZiZzY29wZWQ9dHJ1ZSZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTXVsdGlzZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFjZDJmZjhhJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL011bHRpc2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTXVsdGlzZWxlY3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogY3VzdG9tIGJsb2NrcyAqL1xuaW1wb3J0IGJsb2NrMCBmcm9tIFwiLi9NdWx0aXNlbGVjdC52dWU/dnVlJnR5cGU9Y3VzdG9tJmluZGV4PTAmYmxvY2tUeXBlPWRvY3NcIlxuaWYgKHR5cGVvZiBibG9jazAgPT09ICdmdW5jdGlvbicpIGJsb2NrMChjb21wb25lbnQpXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzFjZDJmZjhhJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzFjZDJmZjhhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzFjZDJmZjhhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9NdWx0aXNlbGVjdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWNkMmZmOGEmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMWNkMmZmOGEnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9jb21wb25lbnRzL011bHRpc2VsZWN0L011bHRpc2VsZWN0LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NdWx0aXNlbGVjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NdWx0aXNlbGVjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTXVsdGlzZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFjZDJmZjhhJlwiIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5pbXBvcnQgU2NvcGVDb21wb25lbnQgZnJvbSAnLi4vLi4vdXRpbHMvU2NvcGVDb21wb25lbnQnXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnLi9NdWx0aXNlbGVjdCdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5TY29wZUNvbXBvbmVudChNdWx0aXNlbGVjdClcblxuZXhwb3J0IGRlZmF1bHQgTXVsdGlzZWxlY3RcbiIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuL2luZGV4LnNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1MDkzY2NhJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGN1c3RvbSBibG9ja3MgKi9cbmltcG9ydCBibG9jazAgZnJvbSBcIi4vUG9wb3Zlci52dWU/dnVlJnR5cGU9Y3VzdG9tJmluZGV4PTAmYmxvY2tUeXBlPWRvY3NcIlxuaWYgKHR5cGVvZiBibG9jazAgPT09ICdmdW5jdGlvbicpIGJsb2NrMChjb21wb25lbnQpXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzQ1MDkzY2NhJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzQ1MDkzY2NhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzQ1MDkzY2NhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTA5M2NjYSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc0NTA5M2NjYScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDUwOTNjY2EmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1BvcG92ZXJNZW51LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTBlYjcxOSZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qb3BvdmVyTWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BvcG92ZXJNZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Qb3BvdmVyTWVudS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wYTBlYjcxOSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjBhMGViNzE5XCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGN1c3RvbSBibG9ja3MgKi9cbmltcG9ydCBibG9jazAgZnJvbSBcIi4vUG9wb3Zlck1lbnUudnVlP3Z1ZSZ0eXBlPWN1c3RvbSZpbmRleD0wJmJsb2NrVHlwZT1kb2NzXCJcbmlmICh0eXBlb2YgYmxvY2swID09PSAnZnVuY3Rpb24nKSBibG9jazAoY29tcG9uZW50KVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcwYTBlYjcxOScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcwYTBlYjcxOScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcwYTBlYjcxOScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUG9wb3Zlck1lbnUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhMGViNzE5JnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzBhMGViNzE5Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9Qb3BvdmVyTWVudS9Qb3BvdmVyTWVudS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlck1lbnUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlck1lbnUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlck1lbnUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MGEwZWI3MTkmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BvcG92ZXJNZW51LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTBlYjcxOSZzY29wZWQ9dHJ1ZSZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vUG9wb3Zlck1lbnVJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MTJlYTc2OCZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL1BvcG92ZXJNZW51SXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01MTJlYTc2OCZzY29wZWQ9dHJ1ZSZsYW5nPWNzcyZcIlxuaW1wb3J0IHN0eWxlMSBmcm9tIFwiLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTEyZWE3NjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI1MTJlYTc2OFwiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc1MTJlYTc2OCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc1MTJlYTc2OCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc1MTJlYTc2OCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUG9wb3Zlck1lbnVJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MTJlYTc2OCZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc1MTJlYTc2OCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvUG9wb3Zlck1lbnUvUG9wb3Zlck1lbnVJdGVtLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlck1lbnVJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTEyZWE3Njgmc2NvcGVkPXRydWUmbGFuZz1jc3MmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyTWVudUl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTEyZWE3NjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BvcG92ZXJNZW51SXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTEyZWE3Njgmc2NvcGVkPXRydWUmXCIiLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cbmltcG9ydCBQb3BvdmVyTWVudSBmcm9tICcuL1BvcG92ZXJNZW51J1xuXG5leHBvcnQgZGVmYXVsdCBQb3BvdmVyTWVudVxuIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9NZW50aW9uQnViYmxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OWY0MGVjOCZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NZW50aW9uQnViYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTWVudGlvbkJ1YmJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vTWVudGlvbkJ1YmJsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02OWY0MGVjOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjY5ZjQwZWM4XCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzY5ZjQwZWM4JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzY5ZjQwZWM4JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzY5ZjQwZWM4JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9NZW50aW9uQnViYmxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OWY0MGVjOCZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc2OWY0MGVjOCcsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvUmljaENvbnRlbnRlZGl0YWJsZS9NZW50aW9uQnViYmxlLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NZW50aW9uQnViYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01lbnRpb25CdWJibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudGlvbkJ1YmJsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02OWY0MGVjOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudGlvbkJ1YmJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjlmNDBlYzgmc2NvcGVkPXRydWUmXCIiLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEp1bGl1cyBIw6RydGwgPGp1c0BiaXRncmlkLm5ldD5cbiAqXG4gKiBAYXV0aG9yIEp1bGl1cyBIw6RydGwgPGp1c0BiaXRncmlkLm5ldD5cbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuaW1wb3J0IHsgVlRvb2x0aXAgfSBmcm9tICd2LXRvb2x0aXAnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuLy8gZm9yY2Ugc2NvcGUgdGhlIHRvb2x0aXAgYW5kIHVzZSAudnVlLXRvb2x0aXBcbi8vIGluc3RlYWQgb2YgLnRvb2x0aXAgdG8gYXZvaWQgc2VydmVyIGNvbXBhdGliaWxpdHlcbi8vIGlzc3VlcyBhbmQgdGhlIHVzZSBvZiAhaW1wb3J0YW50XG5WVG9vbHRpcC5vcHRpb25zLmRlZmF1bHRUZW1wbGF0ZSA9IGA8ZGl2IGNsYXNzPVwidnVlLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiIGRhdGEtdi0ke1NDT1BFX1ZFUlNJT059PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj48L2Rpdj5gXG5WVG9vbHRpcC5vcHRpb25zLmRlZmF1bHRIdG1sID0gZmFsc2VcblxuZXhwb3J0IGRlZmF1bHQgVlRvb2x0aXBcbiIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuL2luZGV4LnNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6YXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3Q7YmFzZTY0LHJnOEFBT1FPQUFBQkFBSUFBQUFBQUFJQUJRTUFBQUFBQUFBQlFKQUJBQUFBQUV4UUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBTy96c1B3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0FBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdBQUFBQUFBQllBQUZZQVpRQnlBSE1BYVFCdkFHNEFJQUF4QUM0QU1BQUFLQUFBYVFCakFHOEFiZ0JtQUc4QWJnQjBBQzBBZGdCMUFHVUFMUUE0QURRQVl3QTBBRFlBTVFCbUFBQUFBQUFCQUFBQUNnQ0FBQU1BSUU5VEx6SjA0NC9SQUFBQXJBQUFBR0JqYldGd0FBM3J1QUFBQVF3QUFBRkNaMng1WnNkSE9Vd0FBQUpRQUFBSC9HaGxZV1FyNnhmM0FBQUtUQUFBQURab2FHVmhKdjBUaFFBQUNvUUFBQUFrYUcxMGVHZSsvLzhBQUFxb0FBQUFOR3h2WTJFTnZBOW1BQUFLM0FBQUFDaHRZWGh3QVNBQVZ3QUFDd1FBQUFBZ2JtRnRaVzNFK1ZRQUFBc2tBQUFDcG5CdmMzUS9WTDdYQUFBTnpBQUFBUllBQkJMS0FaQUFCUUFBREdVTnJBQUFBcndNWlEyc0FBQUpZQUQxQlFvQUFBSUFCUU1BQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQVVHWkZaQUJBNmdIcUVoT0lBQUFCd2hPSUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFEQUFBQUF3QUFBQndBQVFBQUFBQUFQQUFEQUFFQUFBQWNBQVFBSUFBQUFBUUFCQUFCQUFEcUV2Ly9BQURxQWYvL0ZnQUFBUUFBQUFBQUFBRUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBT3BnOURBQVVBQ3dBQUNRSVJDUVFSQ1FFT3B2cUNCWDc3dWdSRytvTDZnZ1YrKzdvRVJnOUMrb0w2Z2dFNEJFWUVSZ0U0K29MNmdnRTRCRVlFUmdBQkFBQUFBQTF1RWxBQUJRQUFDUUVSQ1FFUkJoc0hVL2QwQ0l3SnhQaXQvc2dJaXdpTS9zY0FBZ0FBQUFBUDN3OURBQVVBQ3dBQUNRSVJDUVFSQ1FFRTRnVisrb0lFUnZ1NkJYNEZmL3FCQkViN3VnUkdCWDRGZnY3SSs3cjd1djdJQlg0RmZ2N0krN3I3dWdBQkFBQUFBQTZtRWxBQUJRQUFDUUVSQ1FFUkRXNzRyUWlMOTNVSnhBZFRBVG4zZFBkMUFUZ0FBUUFBQUFBR054T0lBQVVBQUJNSENRRVhBWlNVQlhMNmpwUUZveE9JVmZhUjlwRlZDY1FBQUFFQUFBQUFFWWNQZ3dBRkFBQUpCUS9OOS9QNysvNUdCYjhKeHcrRDkvTUVCZjVIK2tFSnhnQUJBQUFBQUJFWEVSY0FDd0FBQ1FzUkYvM3Qrc0Q2d1AzdEJVRDZ3QUlUQlVBRlFBSVQrc0FFaFAzdEJVRDZ3QUlUQlVBRlFBSVQrc0FGUVAzdCtzQUFBZi8vQUFBVGt4THNBRE1BQUFFaUJ3NEJGeFlYQVNFbUJ3WUhCZ2NHRkJjV0Z4WVhGamNoQVFZSEJoY1dGeDRCRnhZWEZqYzJOd0UyTnpZbkppY0JMZ0VLWUdWUFNrWVFFa2dGMS9IZ1RUNDZLU2NVRkJRVUp5azZQazBPSVBvcE54b1lBd01iR1ZZMU56cytPajgxQiswN0ZSVVVGVHo0RXl4MEV1dzVOS3haWUVmNktnRWJHQzRzT1RoNE9Ea3NMaGdiQXZvcE5UODdQam8zTmxZWkdnTURHQms0Qit3OFVWQlBVandIN0MweUFBQUFBZ0FBQUFBT3BoSlFBQmdBUmdBQUFTSUhEZ0VIQmhRWEhnRVhGakkzUGdFM05qUW5MZ0VuSmdFaUJ3WUhCaFFYRmhjV015RVJJU0lIQmdjR0ZCY1dGeFkzSVRJM05qYzJOQ2NtSnlZaklSRTBKeVluSmlNSmRtOW1ZcGdwS3lzcG1HSm0zbVppbHlvckt5cVhZbWI4TmxaSVJ5a3JLeWxIU0ZZQ2NmMlBWa2hIS1NzcktVZElWZ2RUVlVoSEtTc3JLVWRJVmYyUEt5bEhTVlVTVUNzcWwyTmwzMlZpbUNrckt5bVlZbVhmWldPWEtpdjU1U3NwUjBpclNFY3BLL25tS3lsSFNhcEpSeWtyQVNvcFIwbXFTVWNwS3dkVFZVaEhLU3NBQUFNQUFBQUFFUmNSRndBREFBY0FDd0FBQVJFaEVRRVJJUkVCRVNFUkFuRU9wdkZhRHFieFdnNm1FUmY5andKeCtlYjlqd0p4K2VYOWp3SnhBQU1BQUFBQUVwNEw1d0FZQURFQVNnQUFBVElYSGdFWEZoUUhEZ0VIQmlJbkxnRW5KalEzUGdFM05pRXlGeDRCRnhZVUJ3NEJCd1lpSnk0Qkp5WTBOejRCTnpZaE1oY2VBUmNXRkFjT0FRY0dJaWN1QVNjbU5EYytBVGMyQXcxd1pXS1lLU3NyS1poaVpkOW1ZcGNxS3lzcWwySm1CeVp2Wm1LWEtpc3JLcGRpWnQ1bVlwY3FLeXNxbDJKbUJ5WnZabUtYS2lzcktwZGladDlsWXBncEt5c3BtR0psQytjcktwZGladDVtWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1iZVptS1hLaXNyS3BkaVp0NW1ZcGNxS3lzcWwySm0zbVppbHlvckt5cVhZbWJlWm1LWEtpc0FBQUFBQWdBQUFBQVAzdy9mQUFNQUJ3QUFBUkVoRVNFUklSRURxZ1RpQW5FRTRnL2Y4OHNNTmZQTEREVUFBQUFCQUFBQUFCRVhFUmNBQWdBQUNRSUNjUTZtOFZvUkYvaXQrSzBBQVFBQUFBQU9wZ3cxQUFJQUFBa0NCT0lFNGdUaUREWDdIZ1RnQUFILzRBQUFFMmtUYVFBeEFBQUJCQVVFQlFRREFnTUNFUkFURWhNU0JRUUZCQ0VnSlNRbEpCTVNFeElUQmdBRkJDRWdKU1FuSmljbUF3SVJFQk1TQUFocy9waitzZjY2L3UzKzdzYkthMjZBZStubEFUa0JQQUZ5QVg0QmxnRnhBV0VCVmdFdUFTcnI3Sm1jT0x6K0tmNzUvdlArNnY2Ky9zNysyZjM3dUx0aloxQk9BU2NUYVM2WGsrbm4vdGYrMC82ci9wLytqLzVxL29MK2p2N0Uvc2ZsNkh5QWEyakZ3Z0VOQVE0QlF3RkxBV25NL3RwT1VHZGp1N2o3L1FFbkFUSUJRZ0VsQVJNQkRRSExBQUlBQUFBQUU0Z1RpQUFrQUVBQUFBRWdCUVFGQkFNQ0F3SVFFeElURWdVRUJRUWdKU1FsSkJNU0V4SVFBd0lEQWlVa0pTUUJJVElYSGdFWEZoUUhEZ0VIQmlNaElpY3VBU2NtTkRjK0FUYzJDY1QrYXY2Qy9vNyt4UDdINWVoOGdJQjg2T1VCT1FFOEFYSUJmZ01zQVg0QmNnRThBVG5sNkh5QWdIem81ZjdIL3NUK2p2NkMrc0VIVTF0WFZJUWtKaVlraEZSWFcvaXRYRmRVaENRbUppU0VWRmNUaUlCODZPWCt4LzdFL283K2d2elUvb0wranY3RS9zZmw2SHlBZ0h6bzVRRTVBVHdCY2dGK0F5d0JmZ0Z5QVR3Qk9lWG9mSUQ0RVNZbGhGTlh1RmRUaENVbUppV0VVMWU0VjFPRUpTWUFBQUFDQUFBQUFCT0lFNGdBSkFBOUFBQUJJQVVFQlFRREFnTUNFQk1TRXhJRkJBVUVJQ1VrSlNRVEVoTVNFQU1DQXdJbEpDVWtBU0FGQkFBVEVoQURBZ0FGQkNBbEpBQURBaEFURWdBbEpBbkUvbXIrZ3Y2Ty9zVCt4K1hvZklDQWZPamxBVGtCUEFGeUFYNERMQUYrQVhJQlBBRTU1ZWg4Z0lCODZPWCt4LzdFL283K2d2NXFBVGNCRndFUEFadHdkSFJ3L21YKzhmN3AvWkwrNmY3eC9tVndkSFJ3QVpzQkR3RVhFNGlBZk9qbC9zZit4UDZPL29MODFQNkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUEvQmgwY1A1bC92SCs2ZjJTL3VuKzhmNWxjSFIwY0FHYkFROEJGd0p1QVJjQkR3R2JjSFFBQUFBQ0FBQUFBQk9JRTRnQUF3QW9BQUFCSVJFaEFTQUZCQVVFQXdJREFoQVRFaE1TQlFRRkJDQWxKQ1VrRXhJVEVoQURBZ01DSlNRbEpBWGNCOUQ0TUFQby9tcitndjZPL3NUK3grWG9mSUNBZk9qbEFUa0JQQUZ5QVg0RExBRitBWElCUEFFNTVlaDhnSUI4Nk9YK3gvN0UvbzcrZ2dYY0I5QUYzSUI4Nk9YK3gvN0UvbzcrZ3Z6VS9vTCtqdjdFL3NmbDZIeUFnSHpvNVFFNUFUd0JjZ0YrQXl3QmZnRnlBVHdCT2VYb2ZJQUFBQUVBQUFBQkFBQS83UHc3WHc4ODlRQUxFNGdBQUFBQTNOVkg5UUFBQUFEY2hHdjEvK0FBQUJPVEU0Z0FBQUFJQUFJQUFBQUFBQUFBQVFBQUU0Z0FBQUFBRTRqLzRQLzFFNU1BQVFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBQUFBQUU0Z0FBQk9JQUFBVGlBQUFFNGdBQUFZMkFBQVRpQUFBQUFELy93QUFBQUFBQUFBQUFBQUFBUC9nQUFBQUFBQUFBQUFBQUFBaUFEWUFXQUJzQUlBQWxBQzBBUTRCZkFHYUFoQUNKZ0kwQWtJQ3FBTWlBNllEL2dBQkFBQUFFd0JMQUFNQUFBQUFBQUlBQUFBS0FBb0FBQUQvQUFBQUFBQUFBQUFBRUFER0FBRUFBQUFBQUFFQUZBQUFBQUVBQUFBQUFBSUFCd0FVQUFFQUFBQUFBQU1BRkFBYkFBRUFBQUFBQUFRQUZBQXZBQUVBQUFBQUFBVUFDd0JEQUFFQUFBQUFBQVlBRkFCT0FBRUFBQUFBQUFvQUt3QmlBQUVBQUFBQUFBc0FFd0NOQUFNQUFRUUpBQUVBS0FDZ0FBTUFBUVFKQUFJQURnRElBQU1BQVFRSkFBTUFLQURXQUFNQUFRUUpBQVFBS0FEK0FBTUFBUVFKQUFVQUZnRW1BQU1BQVFRSkFBWUFLQUU4QUFNQUFRUUpBQW9BVmdGa0FBTUFBUVFKQUFzQUpnRzZhV052Ym1admJuUXRkblZsTFRnMFl6UTJNV1pTWldkMWJHRnlhV052Ym1admJuUXRkblZsTFRnMFl6UTJNV1pwWTI5dVptOXVkQzEyZFdVdE9EUmpORFl4WmxabGNuTnBiMjRnTVM0d2FXTnZibVp2Ym5RdGRuVmxMVGcwWXpRMk1XWkhaVzVsY21GMFpXUWdZbmtnYzNabk1uUjBaaUJtY205dElFWnZiblJsYkd4dklIQnliMnBsWTNRdWFIUjBjRG92TDJadmJuUmxiR3h2TG1OdmJRQnBBR01BYndCdUFHWUFid0J1QUhRQUxRQjJBSFVBWlFBdEFEZ0FOQUJqQURRQU5nQXhBR1lBVWdCbEFHY0FkUUJzQUdFQWNnQnBBR01BYndCdUFHWUFid0J1QUhRQUxRQjJBSFVBWlFBdEFEZ0FOQUJqQURRQU5nQXhBR1lBYVFCakFHOEFiZ0JtQUc4QWJnQjBBQzBBZGdCMUFHVUFMUUE0QURRQVl3QTBBRFlBTVFCbUFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeEFDNEFNQUJwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQVJ3QmxBRzRBWlFCeUFHRUFkQUJsQUdRQUlBQmlBSGtBSUFCekFIWUFad0F5QUhRQWRBQm1BQ0FBWmdCeUFHOEFiUUFnQUVZQWJ3QnVBSFFBWlFCc0FHd0Fid0FnQUhBQWNnQnZBR29BWlFCakFIUUFMZ0JvQUhRQWRBQndBRG9BTHdBdkFHWUFid0J1QUhRQVpRQnNBR3dBYndBdUFHTUFid0J0QUFBQUFnQUFBQUFBQUFBeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFd0FUQUFBQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNUllYSnliM2N0YkdWbWRDMWtiM1ZpYkdVS1lYSnliM2N0YkdWbWRCSmhjbkp2ZHkxeWFXZG9kQzFrYjNWaWJHVUxZWEp5YjNjdGNtbG5hSFFLWW5KbFlXUmpjblZ0WWdsamFHVmphMjFoY21zRlkyeHZjMlVIWTI5dVptbHliUVJwYm1adkJHMWxiblVFYlc5eVpRVndZWFZ6WlFSd2JHRjVDblJ5YVdGdVoyeGxMWE1RZFhObGNpMXpkR0YwZFhNdFlYZGhlUTkxYzJWeUxYTjBZWFIxY3kxa2JtUVZkWE5sY2kxemRHRjBkWE10YVc1MmFYTnBZbXhsRW5WelpYSXRjM1JoZEhWekxXOXViR2x1WlFBQVwiIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQnpkR0Z1WkdGc2IyNWxQU0p1YnlJL1Bqd2hSRTlEVkZsUVJTQnpkbWNnVUZWQ1RFbERJQ0l0THk5WE0wTXZMMFJVUkNCVFZrY2dNUzR4THk5RlRpSWdJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMGR5WVhCb2FXTnpMMU5XUnk4eExqRXZSRlJFTDNOMlp6RXhMbVIwWkNJZ1BqeHpkbWNnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4YldWMFlXUmhkR0UrUEM5dFpYUmhaR0YwWVQ0OFpHVm1jejQ4Wm05dWRDQnBaRDBpYVdOdmJtWnZiblF0ZG5WbExUZzBZelEyTVdZaUlHaHZjbWw2TFdGa2RpMTRQU0kxTURBd0lqNDhabTl1ZEMxbVlXTmxJR1p2Ym5RdFptRnRhV3g1UFNKcFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFppSWdabTl1ZEMxM1pXbG5hSFE5SWpRd01DSWdabTl1ZEMxemRISmxkR05vUFNKdWIzSnRZV3dpSUhWdWFYUnpMWEJsY2kxbGJUMGlOVEF3TUNJZ2NHRnViM05sTFRFOUlqSWdNQ0ExSURNZ01DQXdJREFnTUNBd0lEQWlJR0Z6WTJWdWREMGlOVEF3TUNJZ1pHVnpZMlZ1ZEQwaU1DSWdlQzFvWldsbmFIUTlJakFpSUdKaWIzZzlJaTB6TWlBd0lEVXdNVEVnTlRBd01DSWdkVzVrWlhKc2FXNWxMWFJvYVdOcmJtVnpjejBpTUNJZ2RXNWtaWEpzYVc1bExYQnZjMmwwYVc5dVBTSTFNQ0lnZFc1cFkyOWtaUzF5WVc1blpUMGlWU3RsWVRBeExXVmhNVElpSUM4K1BHMXBjM05wYm1jdFoyeDVjR2dnYUc5eWFYb3RZV1IyTFhnOUlqQWlJQ0F2UGp4bmJIbHdhQ0JuYkhsd2FDMXVZVzFsUFNKaGNuSnZkeTFzWldaMExXUnZkV0pzWlNJZ2RXNXBZMjlrWlQwaUppTjRaV0V3TVRzaUlHUTlJazB6TnpVd0lETTVNRFlnYkMweE5EQTJJQzB4TkRBMklHd3hOREEySUMweE5EQTJJR3d3SURNeE1pQnNMVEV3T1RRZ01UQTVOQ0JzTVRBNU5DQXhNRGswSUd3d0lETXhNaUJhVFRJek5EUWdNemt3TmlCc0xURTBNRFlnTFRFME1EWWdiREUwTURZZ0xURTBNRFlnYkRBZ016RXlJR3d0TVRBNU5DQXhNRGswSUd3eE1EazBJREV3T1RRZ2JEQWdNekV5SUZvaUlDOCtQR2RzZVhCb0lHZHNlWEJvTFc1aGJXVTlJbUZ5Y205M0xXeGxablFpSUhWdWFXTnZaR1U5SWlZamVHVmhNREk3SWlCa1BTSk5NVFUyTXlBeU5UQXdJR3d4T0RjMUlDMHhPRGMxSUd3d0lDMHpNVElnYkMweU1UZzRJREl4T0RjZ2JESXhPRGdnTWpFNE9DQnNNQ0F0TXpFeklHd3RNVGczTlNBdE1UZzNOU0JhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSmhjbkp2ZHkxeWFXZG9kQzFrYjNWaWJHVWlJSFZ1YVdOdlpHVTlJaVlqZUdWaE1ETTdJaUJrUFNKTk1USTFNQ0F4TURrMElHd3hOREEySURFME1EWWdiQzB4TkRBMklERTBNRFlnYkRBZ0xUTXhNaUJzTVRBNU5DQXRNVEE1TkNCc0xURXdPVFFnTFRFd09UUWdiREFnTFRNeE1pQmFUVEkyTlRZZ01UQTVOQ0JzTVRRd055QXhOREEySUd3dE1UUXdOeUF4TkRBMklHd3dJQzB6TVRJZ2JERXdPVFFnTFRFd09UUWdiQzB4TURrMElDMHhNRGswSUd3d0lDMHpNVElnV2lJZ0x6NDhaMng1Y0dnZ1oyeDVjR2d0Ym1GdFpUMGlZWEp5YjNjdGNtbG5hSFFpSUhWdWFXTnZaR1U5SWlZamVHVmhNRFE3SWlCa1BTSk5NelF6T0NBeU5UQXdJR3d0TVRnM05TQXhPRGMxSUd3d0lETXhNeUJzTWpFNE55QXRNakU0T0NCc0xUSXhPRGNnTFRJeE9EY2diREFnTXpFeUlHd3hPRGMxSURFNE56VWdXaUlnTHo0OFoyeDVjR2dnWjJ4NWNHZ3RibUZ0WlQwaVluSmxZV1JqY25WdFlpSWdkVzVwWTI5a1pUMGlKaU40WldFd05Uc2lJR1E5SWsweE5EZ2dOVEF3TUNCc0xURTBPQ0F0T0RVZ2JERXpPVFFnTFRJME1UVWdiQzB4TXprMElDMHlOREUxSUd3eE5EZ2dMVGcxSUd3eE5EUXpJREkxTURBZ2JDMHhORFF6SURJMU1EQWdXaUlnTHo0OFoyeDVjR2dnWjJ4NWNHZ3RibUZ0WlQwaVkyaGxZMnR0WVhKcklpQjFibWxqYjJSbFBTSW1JM2hsWVRBMk95SWdaRDBpVFRRd05EVWdNemszTVNCc0xUSXdOakVnTFRJd05qRWdiQzB4TURJNUlERXdNamtnYkMwME5ESWdMVFEwTVNCc01UUTNNU0F0TVRRM01TQnNNalV3TXlBeU5UQXlJR3d0TkRReUlEUTBNaUJhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSmpiRzl6WlNJZ2RXNXBZMjlrWlQwaUppTjRaV0V3TnpzaUlHUTlJazAwTXpjMUlERXhOVFlnYkMwMU16RWdMVFV6TVNCc0xURXpORFFnTVRNME5DQnNMVEV6TkRRZ0xURXpORFFnYkMwMU16RWdOVE14SUd3eE16UTBJREV6TkRRZ2JDMHhNelEwSURFek5EUWdiRFV6TVNBMU16RWdiREV6TkRRZ0xURXpORFFnYkRFek5EUWdNVE0wTkNCc05UTXhJQzAxTXpFZ2JDMHhNelEwSUMweE16UTBJR3d4TXpRMElDMHhNelEwSUZvaUlDOCtQR2RzZVhCb0lHZHNlWEJvTFc1aGJXVTlJbU52Ym1acGNtMGlJSFZ1YVdOdlpHVTlJaVlqZUdWaE1EZzdJaUJrUFNKTk1qWTFOaUEwT0RRMElIRXRNVEF4SURBZ0xURTRNQ0F0TlRjZ2NTMDNOQ0F0TlRJZ0xURXdPU0F0TVRNNElIRXRNelVnTFRnMklDMHhPU0F0TVRjMUlIRXhPQ0F0T1RZZ09UQWdMVEUyTnlCc01UUTVOU0F0TVRRNU5DQnNMVE0yTVRZZ01DQnhMVGMzSURFZ0xURXpPU0F0TWpZZ2NTMDFPQ0F0TWpRZ0xUazVJQzAzTUNCeExUTTVJQzAwTkNBdE5Ua2dMVEV3TVNCeExUSXdJQzAxTmlBdE1qQWdMVEV4TmlCeE1DQXROakFnTWpBZ0xURXhOaUJ4TWpBZ0xUVTNJRFU1SUMweE1ERWdjVFF4SUMwME5pQTVPU0F0TnpBZ2NUWXlJQzB5TnlBeE16a2dMVEkxSUd3ek5qRTJJREFnYkMweE5EazFJQzB4TkRrMUlIRXROVFVnTFRVeklDMDRNU0F0TVRFMklIRXRNalFnTFRVNUlDMHlNU0F0TVRJeElIRXpJQzAxT0NBek1DQXRNVEV6SUhFeU5TQXROVFFnTmpnZ0xUazNJSEUwTXlBdE5ETWdPVFlnTFRZNElIRTFOU0F0TWpZZ01URTBJQzB5T1NCeE5qSWdMVE1nTVRJd0lESXhJSEUyTXlBeU5TQXhNVFlnT0RFZ2JESXdNamtnTWpBeU9DQnhOVGtnTmpBZ09EQWdNVFF4SUhFeU1TQTRNQ0F4SURFMU9TQnhMVEl4SURneUlDMDRNU0F4TkRJZ2JDMHlNREk1SURJd01qZ2djUzAwTkNBME5TQXRNVEF5SURjd0lIRXROVGdnTWpVZ0xURXlNaUF5TlNCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0pwYm1adklpQjFibWxqYjJSbFBTSW1JM2hsWVRBNU95SWdaRDBpVFRJME1qSWdORFk0T0NCeExURXhNU0F3SUMweU1UTWdMVFF6SUhFdE9UZ2dMVFF5SUMweE56UWdMVEV4Tnk0MUlIRXROellnTFRjMUxqVWdMVEV4TnlBdE1UYzBMalVnY1MwME15QXRNVEF4SUMwME15QXRNakV5TGpVZ2NUQWdMVEV4TVM0MUlEUXpJQzB5TVRJdU5TQnhOREVnTFRrNElERXhOeUF0TVRjMElIRTNOaUF0TnpZZ01UYzBJQzB4TVRjZ2NURXdNaUF0TkRNZ01qRXpJQzAwTXlCeE1URXhJREFnTWpFeklEUXpJSEU1T0NBME1TQXhOek11TlNBeE1UY2djVGMxTGpVZ056WWdNVEUzTGpVZ01UYzBJSEUwTXlBeE1ERWdORE1nTWpFeUxqVWdjVEFnTVRFeExqVWdMVFF6SURJeE1pNDFJSEV0TkRJZ09Ua2dMVEV4Tnk0MUlERTNOQzQxSUhFdE56VXVOU0EzTlM0MUlDMHhOek11TlNBeE1UY3VOU0J4TFRFd01pQTBNeUF0TWpFeklEUXpJRnBOTVRVMk15QXpNVEkxSUhFdE9EWWdNQ0F0TVRVNElDMDBNeUJ4TFRjeElDMDBNU0F0TVRFeUlDMHhNVElnY1MwME15QXROeklnTFRReklDMHhOVGN1TlNCeE1DQXRPRFV1TlNBME15QXRNVFUzTGpVZ2NUUXhJQzAzTVNBeE1USWdMVEV4TWlCeE56SWdMVFF6SURFMU9DQXRORE1nYkRZeU5TQXdJR3d3SUMweE5UWXlJR3d0TmpJMUlEQWdjUzA0TmlBd0lDMHhOVGdnTFRReklIRXROekVnTFRReElDMHhNVElnTFRFeE1pQnhMVFF6SUMwM015QXRORE1nTFRFMU9DQnhNQ0F0T0RVZ05ETWdMVEUxT0NCeE5ERWdMVGN4SURFeE1pQXRNVEV5SUhFM01pQXRORE1nTVRVNElDMDBNaUJzTVRnM05TQXdJSEU0TlNBd0lERTFOeUEwTWlCeE56RWdOREVnTVRFeUlERXhNaUJ4TkRNZ056TWdORE1nTVRVNElIRXdJRGcxSUMwME15QXhOVGdnY1MwME1TQTNNU0F0TVRFeUlERXhNaUJ4TFRjeUlEUXpJQzB4TlRjZ05ETWdiQzAyTWpVZ01DQnNNQ0F4T0RjMUlIRXdJRGcxSUMwME15QXhOVGNnY1MwME1TQTNNU0F0TVRFeUlERXhNaUJ4TFRjeklEUXpJQzB4TlRnZ05ETWdiQzA1TXpjZ01DQmFJaUF2UGp4bmJIbHdhQ0JuYkhsd2FDMXVZVzFsUFNKdFpXNTFJaUIxYm1samIyUmxQU0ltSTNobFlUQmhPeUlnWkQwaVRUWXlOU0EwTXpjMUlHd3dJQzAyTWpVZ2JETTNOVEFnTUNCc01DQTJNalVnYkMwek56VXdJREFnV2swMk1qVWdNamd4TXlCc01DQXROakkxSUd3ek56VXdJREFnYkRBZ05qSTFJR3d0TXpjMU1DQXdJRnBOTmpJMUlERXlOVEFnYkRBZ0xUWXlOU0JzTXpjMU1DQXdJR3d3SURZeU5TQnNMVE0zTlRBZ01DQmFJaUF2UGp4bmJIbHdhQ0JuYkhsd2FDMXVZVzFsUFNKdGIzSmxJaUIxYm1samIyUmxQU0ltSTNobFlUQmlPeUlnWkQwaVRUYzRNU0F6TURRM0lIRXhNVElnTUNBeU1UTWdMVFF6SUhFNU9DQXRORElnTVRjMElDMHhNVGN1TlNCeE56WWdMVGMxTGpVZ01URTNJQzB4TnpNdU5TQnhORE1nTFRFd01pQTBNeUF0TWpFeklIRXdJQzB4TVRFZ0xUUXpJQzB5TVRNZ2NTMDBNU0F0T1RnZ0xURXhOeUF0TVRjekxqVWdjUzAzTmlBdE56VXVOU0F0TVRjMElDMHhNVGN1TlNCeExURXdNU0F0TkRNZ0xUSXhNaTQxSUMwME15QnhMVEV4TVM0MUlEQWdMVEl4TXk0MUlEUXpJSEV0T1RnZ05ESWdMVEUzTXk0MUlERXhOeTQxSUhFdE56VXVOU0EzTlM0MUlDMHhNVGN1TlNBeE56TXVOU0J4TFRReklERXdNaUF0TkRNZ01qRXpJSEV3SURFeE1TQTBNeUF5TVRNZ2NUUXlJRGs0SURFeE55NDFJREUzTXk0MUlIRTNOUzQxSURjMUxqVWdNVGN6TGpVZ01URTNMalVnY1RFd01pQTBNeUF5TVRNZ05ETWdXazB5TlRBd0lETXdORGNnY1RFeE1TQXdJREl4TXlBdE5ETWdjVGs0SUMwME1pQXhOek11TlNBdE1URTNMalVnY1RjMUxqVWdMVGMxTGpVZ01URTNMalVnTFRFM015NDFJSEUwTXlBdE1UQXlJRFF6SUMweU1UTWdjVEFnTFRFeE1TQXRORE1nTFRJeE15QnhMVFF5SUMwNU9DQXRNVEUzTGpVZ0xURTNNeTQxSUhFdE56VXVOU0F0TnpVdU5TQXRNVGN6TGpVZ0xURXhOeTQxSUhFdE1UQXlJQzAwTXlBdE1qRXpJQzAwTXlCeExURXhNU0F3SUMweU1UTWdORE1nY1MwNU9DQTBNaUF0TVRjekxqVWdNVEUzTGpVZ2NTMDNOUzQxSURjMUxqVWdMVEV4Tnk0MUlERTNNeTQxSUhFdE5ETWdNVEF5SUMwME15QXlNVE1nY1RBZ01URXhJRFF6SURJeE15QnhORElnT1RnZ01URTNMalVnTVRjekxqVWdjVGMxTGpVZ056VXVOU0F4TnpNdU5TQXhNVGN1TlNCeE1UQXlJRFF6SURJeE15QTBNeUJhVFRReU1Ua2dNekEwTnlCeE1URXhJREFnTWpFeklDMDBNeUJ4T1RnZ0xUUXlJREUzTXk0MUlDMHhNVGN1TlNCeE56VXVOU0F0TnpVdU5TQXhNVGN1TlNBdE1UY3pMalVnY1RReklDMHhNRElnTkRNZ0xUSXhNeUJ4TUNBdE1URXhJQzAwTXlBdE1qRXpJSEV0TkRJZ0xUazRJQzB4TVRjdU5TQXRNVGN6TGpVZ2NTMDNOUzQxSUMwM05TNDFJQzB4TnpNdU5TQXRNVEUzTGpVZ2NTMHhNRElnTFRReklDMHlNVE11TlNBdE5ETWdjUzB4TVRFdU5TQXdJQzB5TVRJdU5TQTBNeUJ4TFRrNElEUXlJQzB4TnpRZ01URTNMalVnY1MwM05pQTNOUzQxSUMweE1UY2dNVGN6TGpVZ2NTMDBNeUF4TURJZ0xUUXpJREl4TXlCeE1DQXhNVEVnTkRNZ01qRXpJSEUwTVNBNU9DQXhNVGNnTVRjekxqVWdjVGMySURjMUxqVWdNVGMwSURFeE55NDFJSEV4TURFZ05ETWdNakV6SURReklGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW5CaGRYTmxJaUIxYm1samIyUmxQU0ltSTNobFlUQmpPeUlnWkQwaVRUa3pPQ0EwTURZeklHd3dJQzB6TVRJMUlHd3hNalV3SURBZ2JEQWdNekV5TlNCc0xURXlOVEFnTUNCYVRUSTRNVE1nTkRBMk15QnNNQ0F0TXpFeU5TQnNNVEkxTUNBd0lHd3dJRE14TWpVZ2JDMHhNalV3SURBZ1dpSWdMejQ4WjJ4NWNHZ2daMng1Y0dndGJtRnRaVDBpY0d4aGVTSWdkVzVwWTI5a1pUMGlKaU40WldFd1pEc2lJR1E5SWswMk1qVWdORE0zTlNCc016YzFNQ0F0TVRnM05TQnNMVE0zTlRBZ0xURTROelVnYkRBZ016YzFNQ0JhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSjBjbWxoYm1kc1pTMXpJaUIxYm1samIyUmxQU0ltSTNobFlUQmxPeUlnWkQwaVRURXlOVEFnTXpFeU5TQnNNVEkxTUNBdE1USTFNQ0JzTVRJMU1DQXhNalE0SUd3dE1qVXdNQ0F5SUZvaUlDOCtQR2RzZVhCb0lHZHNlWEJvTFc1aGJXVTlJblZ6WlhJdGMzUmhkSFZ6TFdGM1lYa2lJSFZ1YVdOdlpHVTlJaVlqZUdWaE1HWTdJaUJrUFNKTk1qRTFOaUEwT1RZNUlIRXRNell3SUMwME5pQXROamsxSUMweE9UY2djUzB6TWpZZ0xURTBOeUF0TmpBeElDMHpPREFnY1MweU56UWdMVEl6TVNBdE5EY3lJQzAxTWpnZ2NTMHlNRElnTFRNd01TQXRNekE1SUMwMk5ESWdjUzB4TVRBZ0xUTTFNeUF0TVRFd0lDMDNNaklnY1RBZ0xUUXdOaUF4TWpnZ0xUYzRPQ0J4TVRJeklDMHpOekFnTXpVMklDMDJPRFlnY1RJeU9TQXRNekV6SURVME1pQXROVFF5SUhFek1UWWdMVEl6TWlBMk9EWWdMVE0xTmlCeE16Z3lJQzB4TWpnZ056ZzRJQzB4TWpnZ2NUTTJPU0F3SURjeU1pQXhNRGNnY1RNME1pQXhNRFFnTmpRMElETXdNU0J4TWprNElERTVOQ0ExTXpNZ05EWXpJSEV5TXpZZ01qY3dJRE00T1NBMU9UTWdjVEUxTmlBek16RWdNakV5SURZNU1pQnhMVEU0T0NBdE1qQTBJQzAwTWpNdU5TQXRNelV4SUhFdE1qTTFMalVnTFRFME55QXRORGs0TGpVZ0xUSXlOU0J4TFRJMk9TQXRPREFnTFRVME55QXRPREFnY1Mwek1qSWdNQ0F0TmpJNElERXdNeUJ4TFRJNU5TQTVPU0F0TlRRNElESTROaUJ4TFRJMU1TQXhPRFFnTFRRek5TQTBNelVnY1MweE9EY2dNalV6SUMweU9EWWdOVFE0SUhFdE1UQXpJRE13TmlBdE1UQXpJRFl5T0NCeE1DQXlPVE1nT0RBZ05UWTRJSEUzT0NBeU5qa2dNakkxTGpVZ05EazRMalVnY1RFME55NDFJREl5T1M0MUlETTFNQzQxSURRd01pNDFJRm9pSUM4K1BHZHNlWEJvSUdkc2VYQm9MVzVoYldVOUluVnpaWEl0YzNSaGRIVnpMV1J1WkNJZ2RXNXBZMjlrWlQwaUppTjRaV0V4TURzaUlHUTlJazB5TlRBd0lEVXdNREFnY1MwME1EWWdNQ0F0TnpnNElDMHhNamdnY1Mwek56QWdMVEV5TkNBdE5qZzJJQzB6TlRZZ2NTMHpNVE1nTFRJeU9TQXROVFF5SUMwMU5ESWdjUzB5TXpJZ0xUTXhOaUF0TXpVMklDMDJPRFlnY1MweE1qZ2dMVE00TWlBdE1USTRJQzAzT0RnZ2NUQWdMVFF3TmlBeE1qZ2dMVGM0T0NCeE1USTBJQzB6TnpBZ016VTJJQzAyT0RZZ2NUSXlPU0F0TXpFeklEVTBNaUF0TlRReUlIRXpNVFlnTFRJek1pQTJPRFlnTFRNMU5pQnhNemd5SUMweE1qZ2dOemc0SUMweE1qZ2djVFF3TmlBd0lEYzRPQ0F4TWpnZ2NUTTNNQ0F4TWpRZ05qZzJJRE0xTmlCeE16RXpJREl5T1NBMU5ESWdOVFF5SUhFeU16SWdNekUySURNMU5pQTJPRFlnY1RFeU9DQXpPRElnTVRJNElEYzRPQ0J4TUNBME1EWWdMVEV5T0NBM09EZ2djUzB4TWpRZ016Y3dJQzB6TlRZZ05qZzJJSEV0TWpJNUlETXhNeUF0TlRReUlEVTBNaUJ4TFRNeE5pQXlNeklnTFRZNE5pQXpOVFlnY1Mwek9ESWdNVEk0SUMwM09EZ2dNVEk0SUZwTk1UVTJNeUF5T1RZNUlHd3hPRGMxSURBZ2NUa3hJREFnTVRjNElDMHpPQ0J4T0RRZ0xUTTNJREUxTUNBdE1UQXpJSEUyTmlBdE5qWWdNVEF5SUMweE5Ea2djVE00SUMwNE55QXpPQ0F0TVRjNUlIRXdJQzA1TWlBdE16Z2dMVEUzT1NCeExUTTJJQzA0TXlBdE1UQXlJQzB4TkRrZ2NTMDJOaUF0TmpZZ0xURTFNQ0F0TVRBeklIRXRPRGNnTFRNNElDMHhOemdnTFRNNElHd3RNVGczTlNBd0lIRXRPVElnTUNBdE1UYzVJRE00SUhFdE9EUWdNemNnTFRFMU1DQXhNRE1nY1MwMk5pQTJOaUF0TVRBeUlERTBPU0J4TFRNNElEZzNJQzB6T0NBeE56a2djVEFnT1RJZ016Z2dNVGM1SUhFek5pQTRNeUF4TURJZ01UUTVJSEUyTmlBMk5pQXhOVEFnTVRBeklIRTROeUF6T0NBeE56a2dNemdnV2lJZ0x6NDhaMng1Y0dnZ1oyeDVjR2d0Ym1GdFpUMGlkWE5sY2kxemRHRjBkWE10YVc1MmFYTnBZbXhsSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEV4T3lJZ1pEMGlUVEkxTURBZ05UQXdNQ0J4TFRRd05pQXdJQzAzT0RnZ0xURXlPQ0J4TFRNM01DQXRNVEkwSUMwMk9EWWdMVE0xTmlCeExUTXhNeUF0TWpJNUlDMDFORElnTFRVME1pQnhMVEl6TWlBdE16RTJJQzB6TlRZZ0xUWTROaUJ4TFRFeU9DQXRNemd5SUMweE1qZ2dMVGM0T0NCeE1DQXROREEySURFeU9DQXROemc0SUhFeE1qUWdMVE0zTUNBek5UWWdMVFk0TmlCeE1qSTVJQzB6TVRNZ05UUXlJQzAxTkRJZ2NUTXhOaUF0TWpNeUlEWTROaUF0TXpVMklIRXpPRElnTFRFeU9DQTNPRGdnTFRFeU9DQnhOREEySURBZ056ZzRJREV5T0NCeE16Y3dJREV5TkNBMk9EWWdNelUySUhFek1UTWdNakk1SURVME1pQTFORElnY1RJek1pQXpNVFlnTXpVMklEWTROaUJ4TVRJNElETTRNaUF4TWpnZ056ZzRJSEV3SURRd05pQXRNVEk0SURjNE9DQnhMVEV5TkNBek56QWdMVE0xTmlBMk9EWWdjUzB5TWprZ016RXpJQzAxTkRJZ05UUXlJSEV0TXpFMklESXpNaUF0TmpnMklETTFOaUJ4TFRNNE1pQXhNamdnTFRjNE9DQXhNamdnV2sweU5UQXdJRFF3TURBZ2NUTXhNU0F3SURVNU1DQXRNVEUySUhFeU56RWdMVEV4TWlBME56WXVOU0F0TXpFM0xqVWdjVEl3TlM0MUlDMHlNRFV1TlNBek1UY3VOU0F0TkRjMkxqVWdjVEV4TmlBdE1qYzVJREV4TmlBdE5Ua3dJSEV3SUMwek1URWdMVEV4TmlBdE5Ua3dJSEV0TVRFeUlDMHlOekVnTFRNeE55NDFJQzAwTnpZdU5TQnhMVEl3TlM0MUlDMHlNRFV1TlNBdE5EYzJMalVnTFRNeE55NDFJSEV0TWpjNUlDMHhNVFlnTFRVNU1DQXRNVEUySUhFdE16RXhJREFnTFRVNU1DQXhNVFlnY1MweU56RWdNVEV5SUMwME56WXVOU0F6TVRjdU5TQnhMVEl3TlM0MUlESXdOUzQxSUMwek1UY3VOU0EwTnpZdU5TQnhMVEV4TmlBeU56a2dMVEV4TmlBMU9UQWdjVEFnTXpFeElERXhOaUExT1RBZ2NURXhNaUF5TnpFZ016RTNMalVnTkRjMkxqVWdjVEl3TlM0MUlESXdOUzQxSURRM05pNDFJRE14Tnk0MUlIRXlOemtnTVRFMklEVTVNQ0F4TVRZZ1dpSWdMejQ4WjJ4NWNHZ2daMng1Y0dndGJtRnRaVDBpZFhObGNpMXpkR0YwZFhNdGIyNXNhVzVsSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEV5T3lJZ1pEMGlUVEUxTURBZ01UVXdNQ0JzTWpBd01DQXdJR3d3SURJd01EQWdiQzB5TURBd0lEQWdiREFnTFRJd01EQWdXazB5TlRBd0lEVXdNREFnY1MwME1EWWdNQ0F0TnpnNElDMHhNamdnY1Mwek56QWdMVEV5TkNBdE5qZzJJQzB6TlRZZ2NTMHpNVE1nTFRJeU9TQXROVFF5SUMwMU5ESWdjUzB5TXpJZ0xUTXhOaUF0TXpVMklDMDJPRFlnY1MweE1qZ2dMVE00TWlBdE1USTRJQzAzT0RnZ2NUQWdMVFF3TmlBeE1qZ2dMVGM0T0NCeE1USTBJQzB6TnpBZ016VTJJQzAyT0RZZ2NUSXlPU0F0TXpFeklEVTBNaUF0TlRReUlIRXpNVFlnTFRJek1pQTJPRFlnTFRNMU5pQnhNemd5SUMweE1qZ2dOemc0SUMweE1qZ2djVFF3TmlBd0lEYzRPQ0F4TWpnZ2NUTTNNQ0F4TWpRZ05qZzJJRE0xTmlCeE16RXpJREl5T1NBMU5ESWdOVFF5SUhFeU16SWdNekUySURNMU5pQTJPRFlnY1RFeU9DQXpPRElnTVRJNElEYzRPQ0J4TUNBME1EWWdMVEV5T0NBM09EZ2djUzB4TWpRZ016Y3dJQzB6TlRZZ05qZzJJSEV0TWpJNUlETXhNeUF0TlRReUlEVTBNaUJ4TFRNeE5pQXlNeklnTFRZNE5pQXpOVFlnY1Mwek9ESWdNVEk0SUMwM09EZ2dNVEk0SUZvaUlDOCtQQzltYjI1MFBqd3ZaR1ZtY3o0OEwzTjJaejQ9XCIiLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6Zm9udC90dGY7YmFzZTY0LEFBRUFBQUFLQUlBQUF3QWdUMU12TW5Uamo5RUFBQUNzQUFBQVlHTnRZWEFBRGV1NEFBQUJEQUFBQVVKbmJIbG14MGM1VEFBQUFsQUFBQWY4YUdWaFpDdnJGL2NBQUFwTUFBQUFObWhvWldFbS9ST0ZBQUFLaEFBQUFDUm9iWFI0Wjc3Ly93QUFDcWdBQUFBMGJHOWpZUTI4RDJZQUFBcmNBQUFBS0cxaGVIQUJJQUJYQUFBTEJBQUFBQ0J1WVcxbGJjVDVWQUFBQ3lRQUFBS21jRzl6ZEQ5VXZ0Y0FBQTNNQUFBQkZnQUVFc29Ca0FBRkFBQU1aUTJzQUFBQ3ZBeGxEYXdBQUFsZ0FQVUZDZ0FBQWdBRkF3QUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUJRWmtWa0FFRHFBZW9TRTRnQUFBSENFNGdBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBTUFBQUFEQUFBQUhBQUJBQUFBQUFBOEFBTUFBUUFBQUJ3QUJBQWdBQUFBQkFBRUFBRUFBT29TLy84QUFPb0IvLzhXQUFBQkFBQUFBQUFBQVFZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQTZtRDBNQUJRQUxBQUFKQWhFSkJCRUpBUTZtK29JRmZ2dTZCRWI2Z3ZxQ0JYNzd1Z1JHRDBMNmd2cUNBVGdFUmdSR0FUajZndnFDQVRnRVJnUkdBQUVBQUFBQURXNFNVQUFGQUFBSkFSRUpBUkVHR3dkVDkzUUlqQW5FK0szK3lBaUxDSXoreHdBQ0FBQUFBQS9mRDBNQUJRQUxBQUFKQWhFSkJCRUpBUVRpQlg3NmdnUkcrN29GZmdWLytvRUVSdnU2QkVZRmZnVisvc2o3dXZ1Ni9zZ0ZmZ1YrL3NqN3V2dTZBQUVBQUFBQURxWVNVQUFGQUFBSkFSRUpBUkVOYnZpdENJdjNkUW5FQjFNQk9mZDA5M1VCT0FBQkFBQUFBQVkzRTRnQUJRQUFFd2NKQVJjQmxKUUZjdnFPbEFXakU0aFY5cEgya1ZVSnhBQUFBUUFBQUFBUmh3K0RBQVVBQUFrRkQ4MzM4L3Y3L2tZRnZ3bkhENFAzOHdRRi9rZjZRUW5HQUFFQUFBQUFFUmNSRndBTEFBQUpDeEVYL2UzNndQckEvZTBGUVByQUFoTUZRQVZBQWhQNndBU0UvZTBGUVByQUFoTUZRQVZBQWhQNndBVkEvZTM2d0FBQi8vOEFBQk9URXV3QU13QUFBU0lIRGdFWEZoY0JJU1lIQmdjR0J3WVVGeFlYRmhjV055RUJCZ2NHRnhZWEhnRVhGaGNXTnpZM0FUWTNOaWNtSndFdUFRcGdaVTlLUmhBU1NBWFg4ZUJOUGpvcEp4UVVGQlFuS1RvK1RRNGcraWszR2hnREF4c1pWalUzT3o0NlB6VUg3VHNWRlJRVlBQZ1RMSFFTN0RrMHJGbGdSL29xQVJzWUxpdzVPSGc0T1N3dUdCc0MraWsxUHpzK09qYzJWaGthQXdNWUdUZ0g3RHhSVUU5U1BBZnNMVElBQUFBQ0FBQUFBQTZtRWxBQUdBQkdBQUFCSWdjT0FRY0dGQmNlQVJjV01qYytBVGMyTkNjdUFTY21BU0lIQmdjR0ZCY1dGeFl6SVJFaElnY0dCd1lVRnhZWEZqY2hNamMyTnpZMEp5WW5KaU1oRVRRbkppY21Jd2wyYjJaaW1Da3JLeW1ZWW1iZVptS1hLaXNyS3BkaVp2dzJWa2hIS1NzcktVZElWZ0p4L1k5V1NFY3BLeXNwUjBoV0IxTlZTRWNwS3lzcFIwaFYvWThyS1VkSlZSSlFLeXFYWTJYZlpXS1lLU3NyS1poaVpkOWxZNWNxSy9ubEt5bEhTS3RJUnlrcitlWXJLVWRKcWtsSEtTc0JLaWxIU2FwSlJ5a3JCMU5WU0VjcEt3QUFBd0FBQUFBUkZ4RVhBQU1BQndBTEFBQUJFU0VSQVJFaEVRRVJJUkVDY1E2bThWb09wdkZhRHFZUkYvMlBBbkg1NXYyUEFuSDU1ZjJQQW5FQUF3QUFBQUFTbmd2bkFCZ0FNUUJLQUFBQk1oY2VBUmNXRkFjT0FRY0dJaWN1QVNjbU5EYytBVGMySVRJWEhnRVhGaFFIRGdFSEJpSW5MZ0VuSmpRM1BnRTNOaUV5Rng0QkZ4WVVCdzRCQndZaUp5NEJKeVkwTno0Qk56WUREWEJsWXBncEt5c3BtR0psMzJaaWx5b3JLeXFYWW1ZSEptOW1ZcGNxS3lzcWwySm0zbVppbHlvckt5cVhZbVlISm05bVlwY3FLeXNxbDJKbTMyVmltQ2tyS3ltWVltVUw1eXNxbDJKbTNtWmlseW9yS3lxWFltYmVabUtYS2lzcktwZGladDVtWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1iZVptS1hLaXNyS3BkaVp0NW1ZcGNxS3dBQUFBQUNBQUFBQUEvZkQ5OEFBd0FIQUFBQkVTRVJJUkVoRVFPcUJPSUNjUVRpRDkvenl3dzE4OHNNTlFBQUFBRUFBQUFBRVJjUkZ3QUNBQUFKQWdKeERxYnhXaEVYK0szNHJRQUJBQUFBQUE2bUREVUFBZ0FBQ1FJRTRnVGlCT0lNTmZzZUJPQUFBZi9nQUFBVGFSTnBBREVBQUFFRUJRUUZCQU1DQXdJUkVCTVNFeElGQkFVRUlTQWxKQ1VrRXhJVEVoTUdBQVVFSVNBbEpDY21KeVlEQWhFUUV4SUFDR3orbVA2eC9ycis3Zjd1eHNwcmJvQjc2ZVVCT1FFOEFYSUJmZ0dXQVhFQllRRldBUzRCS3V2c21adzR2UDRwL3ZuKzgvN3EvcjcrenY3Wi9mdTR1Mk5uVUU0Qkp4TnBMcGVUNmVmKzEvN1QvcXYrbi82UC9tcitndjZPL3NUK3grWG9mSUJyYU1YQ0FRMEJEZ0ZEQVVzQmFjeisyazVRWjJPN3VQdjlBU2NCTWdGQ0FTVUJFd0VOQWNzQUFnQUFBQUFUaUJPSUFDUUFRQUFBQVNBRkJBVUVBd0lEQWhBVEVoTVNCUVFGQkNBbEpDVWtFeElURWhBREFnTUNKU1FsSkFFaE1oY2VBUmNXRkFjT0FRY0dJeUVpSnk0Qkp5WTBOejRCTnpZSnhQNXEvb0wranY3RS9zZmw2SHlBZ0h6bzVRRTVBVHdCY2dGK0F5d0JmZ0Z5QVR3Qk9lWG9mSUNBZk9qbC9zZit4UDZPL29MNndRZFRXMWRVaENRbUppU0VWRmRiK0sxY1YxU0VKQ1ltSklSVVZ4T0lnSHpvNWY3SC9zVCtqdjZDL05UK2d2Nk8vc1QreCtYb2ZJQ0FmT2psQVRrQlBBRnlBWDRETEFGK0FYSUJQQUU1NWVoOGdQZ1JKaVdFVTFlNFYxT0VKU1ltSllSVFY3aFhVNFFsSmdBQUFBSUFBQUFBRTRnVGlBQWtBRDBBQUFFZ0JRUUZCQU1DQXdJUUV4SVRFZ1VFQlFRZ0pTUWxKQk1TRXhJUUF3SURBaVVrSlNRQklBVUVBQk1TRUFNQ0FBVUVJQ1VrQUFNQ0VCTVNBQ1VrQ2NUK2F2NkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUFnSHpvNWY3SC9zVCtqdjZDL21vQk53RVhBUThCbTNCMGRIRCtaZjd4L3VuOWt2N3AvdkgrWlhCMGRIQUJtd0VQQVJjVGlJQjg2T1greC83RS9vNytndnpVL29MK2p2N0Uvc2ZsNkh5QWdIem81UUU1QVR3QmNnRitBeXdCZmdGeUFUd0JPZVhvZklEOEdIUncvbVgrOGY3cC9aTCs2Zjd4L21Wd2RIUndBWnNCRHdFWEFtNEJGd0VQQVp0d2RBQUFBQUlBQUFBQUU0Z1RpQUFEQUNnQUFBRWhFU0VCSUFVRUJRUURBZ01DRUJNU0V4SUZCQVVFSUNVa0pTUVRFaE1TRUFNQ0F3SWxKQ1VrQmR3SDBQZ3dBK2orYXY2Qy9vNyt4UDdINWVoOGdJQjg2T1VCT1FFOEFYSUJmZ01zQVg0QmNnRThBVG5sNkh5QWdIem81ZjdIL3NUK2p2NkNCZHdIMEFYY2dIem81ZjdIL3NUK2p2NkMvTlQrZ3Y2Ty9zVCt4K1hvZklDQWZPamxBVGtCUEFGeUFYNERMQUYrQVhJQlBBRTU1ZWg4Z0FBQUFRQUFBQUVBQUQvcy9EdGZEenoxQUFzVGlBQUFBQURjMVVmMUFBQUFBTnlFYS9YLzRBQUFFNU1UaUFBQUFBZ0FBZ0FBQUFBQUFBQUJBQUFUaUFBQUFBQVRpUC9nLy9VVGt3QUJBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFUaUFBQUU0Z0FBQk9JQUFBVGlBQUFCallBQUJPSUFBQUFBUC8vQUFBQUFBQUFBQUFBQUFBQS8rQUFBQUFBQUFBQUFBQUFBQ0lBTmdCWUFHd0FnQUNVQUxRQkRnRjhBWm9DRUFJbUFqUUNRZ0tvQXlJRHBnUCtBQUVBQUFBVEFFc0FBd0FBQUFBQUFnQUFBQW9BQ2dBQUFQOEFBQUFBQUFBQUFBQVFBTVlBQVFBQUFBQUFBUUFVQUFBQUFRQUFBQUFBQWdBSEFCUUFBUUFBQUFBQUF3QVVBQnNBQVFBQUFBQUFCQUFVQUM4QUFRQUFBQUFBQlFBTEFFTUFBUUFBQUFBQUJnQVVBRTRBQVFBQUFBQUFDZ0FyQUdJQUFRQUFBQUFBQ3dBVEFJMEFBd0FCQkFrQUFRQW9BS0FBQXdBQkJBa0FBZ0FPQU1nQUF3QUJCQWtBQXdBb0FOWUFBd0FCQkFrQUJBQW9BUDRBQXdBQkJBa0FCUUFXQVNZQUF3QUJCQWtBQmdBb0FUd0FBd0FCQkFrQUNnQldBV1FBQXdBQkJBa0FDd0FtQWJwcFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFpsSmxaM1ZzWVhKcFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFptbGpiMjVtYjI1MExYWjFaUzA0TkdNME5qRm1WbVZ5YzJsdmJpQXhMakJwWTI5dVptOXVkQzEyZFdVdE9EUmpORFl4WmtkbGJtVnlZWFJsWkNCaWVTQnpkbWN5ZEhSbUlHWnliMjBnUm05dWRHVnNiRzhnY0hKdmFtVmpkQzVvZEhSd09pOHZabTl1ZEdWc2JHOHVZMjl0QUdrQVl3QnZBRzRBWmdCdkFHNEFkQUF0QUhZQWRRQmxBQzBBT0FBMEFHTUFOQUEyQURFQVpnQlNBR1VBWndCMUFHd0FZUUJ5QUdrQVl3QnZBRzRBWmdCdkFHNEFkQUF0QUhZQWRRQmxBQzBBT0FBMEFHTUFOQUEyQURFQVpnQnBBR01BYndCdUFHWUFid0J1QUhRQUxRQjJBSFVBWlFBdEFEZ0FOQUJqQURRQU5nQXhBR1lBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd0FHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JIQUdVQWJnQmxBSElBWVFCMEFHVUFaQUFnQUdJQWVRQWdBSE1BZGdCbkFESUFkQUIwQUdZQUlBQm1BSElBYndCdEFDQUFSZ0J2QUc0QWRBQmxBR3dBYkFCdkFDQUFjQUJ5QUc4QWFnQmxBR01BZEFBdUFHZ0FkQUIwQUhBQU9nQXZBQzhBWmdCdkFHNEFkQUJsQUd3QWJBQnZBQzRBWXdCdkFHMEFBQUFDQUFBQUFBQUFBRElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEFCTUFBQUVDQVFNQkJBRUZBUVlCQndFSUFRa0JDZ0VMQVF3QkRRRU9BUThCRUFFUkFSSUJFeEZoY25KdmR5MXNaV1owTFdSdmRXSnNaUXBoY25KdmR5MXNaV1owRW1GeWNtOTNMWEpwWjJoMExXUnZkV0pzWlF0aGNuSnZkeTF5YVdkb2RBcGljbVZoWkdOeWRXMWlDV05vWldOcmJXRnlhd1ZqYkc5elpRZGpiMjVtYVhKdEJHbHVabThFYldWdWRRUnRiM0psQlhCaGRYTmxCSEJzWVhrS2RISnBZVzVuYkdVdGN4QjFjMlZ5TFhOMFlYUjFjeTFoZDJGNUQzVnpaWEl0YzNSaGRIVnpMV1J1WkJWMWMyVnlMWE4wWVhSMWN5MXBiblpwYzJsaWJHVVNkWE5sY2kxemRHRjBkWE10YjI1c2FXNWxBQUE9XCIiLCJleHBvcnQgZGVmYXVsdCBcImRhdGE6Zm9udC93b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQThzQUFvQUFBQUFEdVFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlBVeTh5QUFBQTlBQUFBR0FBQUFCZ2RPT1AwV050WVhBQUFBRlVBQUFCUWdBQUFVSUFEZXU0WjJ4NVpnQUFBcGdBQUFmOEFBQUgvTWRIT1V4b1pXRmtBQUFLbEFBQUFEWUFBQUEySytzWDkyaG9aV0VBQUFyTUFBQUFKQUFBQUNRbS9ST0ZhRzEwZUFBQUN2QUFBQUEwQUFBQU5HZSsvLzlzYjJOaEFBQUxKQUFBQUNnQUFBQW9EYndQWm0xaGVIQUFBQXRNQUFBQUlBQUFBQ0FCSUFCWGJtRnRaUUFBQzJ3QUFBS21BQUFDcG0zRStWUndiM04wQUFBT0ZBQUFBUllBQUFFV1AxUysxd0FFRXNvQmtBQUZBQUFNWlEyc0FBQUN2QXhsRGF3QUFBbGdBUFVGQ2dBQUFnQUZBd0FBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFCUVprVmtBRURxQWVvU0U0Z0FBQUhDRTRnQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQU1BQUFBREFBQUFIQUFCQUFBQUFBQThBQU1BQVFBQUFCd0FCQUFnQUFBQUJBQUVBQUVBQU9vUy8vOEFBT29CLy84V0FBQUJBQUFBQUFBQUFRWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUE2bUQwTUFCUUFMQUFBSkFoRUpCQkVKQVE2bStvSUZmdnU2QkViNmd2cUNCWDc3dWdSR0QwTDZndnFDQVRnRVJnUkdBVGo2Z3ZxQ0FUZ0VSZ1JHQUFFQUFBQUFEVzRTVUFBRkFBQUpBUkVKQVJFR0d3ZFQ5M1FJakFuRStLMyt5QWlMQ0l6K3h3QUNBQUFBQUEvZkQwTUFCUUFMQUFBSkFoRUpCQkVKQVFUaUJYNzZnZ1JHKzdvRmZnVi8rb0VFUnZ1NkJFWUZmZ1YrL3NqN3V2dTYvc2dGZmdWKy9zajd1dnU2QUFFQUFBQUFEcVlTVUFBRkFBQUpBUkVKQVJFTmJ2aXRDSXYzZFFuRUIxTUJPZmQwOTNVQk9BQUJBQUFBQUFZM0U0Z0FCUUFBRXdjSkFSY0JsSlFGY3ZxT2xBV2pFNGhWOXBIMmtWVUp4QUFBQVFBQUFBQVJodytEQUFVQUFBa0ZEODMzOC92Ny9rWUZ2d25IRDRQMzh3UUYva2Y2UVFuR0FBRUFBQUFBRVJjUkZ3QUxBQUFKQ3hFWC9lMzZ3UHJBL2UwRlFQckFBaE1GUUFWQUFoUDZ3QVNFL2UwRlFQckFBaE1GUUFWQUFoUDZ3QVZBL2UzNndBQUIvLzhBQUJPVEV1d0FNd0FBQVNJSERnRVhGaGNCSVNZSEJnY0dCd1lVRnhZWEZoY1dOeUVCQmdjR0Z4WVhIZ0VYRmhjV056WTNBVFkzTmljbUp3RXVBUXBnWlU5S1JoQVNTQVhYOGVCTlBqb3BKeFFVRkJRbktUbytUUTRnK2lrM0doZ0RBeHNaVmpVM096NDZQelVIN1RzVkZSUVZQUGdUTEhRUzdEazByRmxnUi9vcUFSc1lMaXc1T0hnNE9Td3VHQnNDK2lrMVB6cytPamMyVmhrYUF3TVlHVGdIN0R4UlVFOVNQQWZzTFRJQUFBQUNBQUFBQUE2bUVsQUFHQUJHQUFBQklnY09BUWNHRkJjZUFSY1dNamMrQVRjMk5DY3VBU2NtQVNJSEJnY0dGQmNXRnhZeklSRWhJZ2NHQndZVUZ4WVhGamNoTWpjMk56WTBKeVluSmlNaEVUUW5KaWNtSXdsMmIyWmltQ2tyS3ltWVltYmVabUtYS2lzcktwZGladncyVmtoSEtTc3JLVWRJVmdKeC9ZOVdTRWNwS3lzcFIwaFdCMU5WU0VjcEt5c3BSMGhWL1k4cktVZEpWUkpRS3lxWFkyWGZaV0tZS1NzcktaaGlaZDlsWTVjcUsvbmxLeWxIU0t0SVJ5a3IrZVlyS1VkSnFrbEhLU3NCS2lsSFNhcEpSeWtyQjFOVlNFY3BLd0FBQXdBQUFBQVJGeEVYQUFNQUJ3QUxBQUFCRVNFUkFSRWhFUUVSSVJFQ2NRNm04Vm9PcHZGYURxWVJGLzJQQW5INTV2MlBBbkg1NWYyUEFuRUFBd0FBQUFBU25ndm5BQmdBTVFCS0FBQUJNaGNlQVJjV0ZBY09BUWNHSWljdUFTY21ORGMrQVRjMklUSVhIZ0VYRmhRSERnRUhCaUluTGdFbkpqUTNQZ0UzTmlFeUZ4NEJGeFlVQnc0QkJ3WWlKeTRCSnlZME56NEJOellERFhCbFlwZ3BLeXNwbUdKbDMyWmlseW9yS3lxWFltWUhKbTltWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1ZSEptOW1ZcGNxS3lzcWwySm0zMlZpbUNrckt5bVlZbVVMNXlzcWwySm0zbVppbHlvckt5cVhZbWJlWm1LWEtpc3JLcGRpWnQ1bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltYmVabUtYS2lzcktwZGladDVtWXBjcUt3QUFBQUFDQUFBQUFBL2ZEOThBQXdBSEFBQUJFU0VSSVJFaEVRT3FCT0lDY1FUaUQ5L3p5d3cxODhzTU5RQUFBQUVBQUFBQUVSY1JGd0FDQUFBSkFnSnhEcWJ4V2hFWCtLMzRyUUFCQUFBQUFBNm1ERFVBQWdBQUNRSUU0Z1RpQk9JTU5mc2VCT0FBQWYvZ0FBQVRhUk5wQURFQUFBRUVCUVFGQkFNQ0F3SVJFQk1TRXhJRkJBVUVJU0FsSkNVa0V4SVRFaE1HQUFVRUlTQWxKQ2NtSnlZREFoRVFFeElBQ0d6K21QNngvcnIrN2Y3dXhzcHJib0I3NmVVQk9RRThBWElCZmdHV0FYRUJZUUZXQVM0Qkt1dnNtWnc0dlA0cC92bis4LzdxL3I3K3p2N1ovZnU0dTJOblVFNEJKeE5wTHBlVDZlZisxLzdUL3F2K24vNlAvbXIrZ3Y2Ty9zVCt4K1hvZklCcmFNWENBUTBCRGdGREFVc0JhY3orMms1UVoyTzd1UHY5QVNjQk1nRkNBU1VCRXdFTkFjc0FBZ0FBQUFBVGlCT0lBQ1FBUUFBQUFTQUZCQVVFQXdJREFoQVRFaE1TQlFRRkJDQWxKQ1VrRXhJVEVoQURBZ01DSlNRbEpBRWhNaGNlQVJjV0ZBY09BUWNHSXlFaUp5NEJKeVkwTno0Qk56WUp4UDVxL29MK2p2N0Uvc2ZsNkh5QWdIem81UUU1QVR3QmNnRitBeXdCZmdGeUFUd0JPZVhvZklDQWZPamwvc2YreFA2Ty9vTDZ3UWRUVzFkVWhDUW1KaVNFVkZkYitLMWNWMVNFSkNZbUpJUlVWeE9JZ0h6bzVmN0gvc1QranY2Qy9OVCtndjZPL3NUK3grWG9mSUNBZk9qbEFUa0JQQUZ5QVg0RExBRitBWElCUEFFNTVlaDhnUGdSSmlXRVUxZTRWMU9FSlNZbUpZUlRWN2hYVTRRbEpnQUFBQUlBQUFBQUU0Z1RpQUFrQUQwQUFBRWdCUVFGQkFNQ0F3SVFFeElURWdVRUJRUWdKU1FsSkJNU0V4SVFBd0lEQWlVa0pTUUJJQVVFQUJNU0VBTUNBQVVFSUNVa0FBTUNFQk1TQUNVa0NjVCthdjZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBZ0h6bzVmN0gvc1QranY2Qy9tb0JOd0VYQVE4Qm0zQjBkSEQrWmY3eC91bjlrdjdwL3ZIK1pYQjBkSEFCbXdFUEFSY1RpSUI4Nk9YK3gvN0UvbzcrZ3Z6VS9vTCtqdjdFL3NmbDZIeUFnSHpvNVFFNUFUd0JjZ0YrQXl3QmZnRnlBVHdCT2VYb2ZJRDhHSFJ3L21YKzhmN3AvWkwrNmY3eC9tVndkSFJ3QVpzQkR3RVhBbTRCRndFUEFadHdkQUFBQUFJQUFBQUFFNGdUaUFBREFDZ0FBQUVoRVNFQklBVUVCUVFEQWdNQ0VCTVNFeElGQkFVRUlDVWtKU1FURWhNU0VBTUNBd0lsSkNVa0Jkd0gwUGd3QStqK2F2NkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUFnSHpvNWY3SC9zVCtqdjZDQmR3SDBBWGNnSHpvNWY3SC9zVCtqdjZDL05UK2d2Nk8vc1QreCtYb2ZJQ0FmT2psQVRrQlBBRnlBWDRETEFGK0FYSUJQQUU1NWVoOGdBQUFBUUFBQUFFQUFEL3MvRHRmRHp6MUFBc1RpQUFBQUFEYzFVZjFBQUFBQU55RWEvWC80QUFBRTVNVGlBQUFBQWdBQWdBQUFBQUFBQUFCQUFBVGlBQUFBQUFUaVAvZy8vVVRrd0FCQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0FBQUFBVGlBQUFFNGdBQUJPSUFBQVRpQUFBQmpZQUFCT0lBQUFBQVAvL0FBQUFBQUFBQUFBQUFBQUEvK0FBQUFBQUFBQUFBQUFBQUNJQU5nQllBR3dBZ0FDVUFMUUJEZ0Y4QVpvQ0VBSW1BalFDUWdLb0F5SURwZ1ArQUFFQUFBQVRBRXNBQXdBQUFBQUFBZ0FBQUFvQUNnQUFBUDhBQUFBQUFBQUFBQUFRQU1ZQUFRQUFBQUFBQVFBVUFBQUFBUUFBQUFBQUFnQUhBQlFBQVFBQUFBQUFBd0FVQUJzQUFRQUFBQUFBQkFBVUFDOEFBUUFBQUFBQUJRQUxBRU1BQVFBQUFBQUFCZ0FVQUU0QUFRQUFBQUFBQ2dBckFHSUFBUUFBQUFBQUN3QVRBSTBBQXdBQkJBa0FBUUFvQUtBQUF3QUJCQWtBQWdBT0FNZ0FBd0FCQkFrQUF3QW9BTllBQXdBQkJBa0FCQUFvQVA0QUF3QUJCQWtBQlFBV0FTWUFBd0FCQkFrQUJnQW9BVHdBQXdBQkJBa0FDZ0JXQVdRQUF3QUJCQWtBQ3dBbUFicHBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhabEpsWjNWc1lYSnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhabWxqYjI1bWIyNTBMWFoxWlMwNE5HTTBOakZtVm1WeWMybHZiaUF4TGpCcFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFprZGxibVZ5WVhSbFpDQmllU0J6ZG1jeWRIUm1JR1p5YjIwZ1JtOXVkR1ZzYkc4Z2NISnZhbVZqZEM1b2RIUndPaTh2Wm05dWRHVnNiRzh1WTI5dEFHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JTQUdVQVp3QjFBR3dBWVFCeUFHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCSEFHVUFiZ0JsQUhJQVlRQjBBR1VBWkFBZ0FHSUFlUUFnQUhNQWRnQm5BRElBZEFCMEFHWUFJQUJtQUhJQWJ3QnRBQ0FBUmdCdkFHNEFkQUJsQUd3QWJBQnZBQ0FBY0FCeUFHOEFhZ0JsQUdNQWRBQXVBR2dBZEFCMEFIQUFPZ0F2QUM4QVpnQnZBRzRBZEFCbEFHd0FiQUJ2QUM0QVl3QnZBRzBBQUFBQ0FBQUFBQUFBQURJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRBQk1BQUFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXhGaGNuSnZkeTFzWldaMExXUnZkV0pzWlFwaGNuSnZkeTFzWldaMEVtRnljbTkzTFhKcFoyaDBMV1J2ZFdKc1pRdGhjbkp2ZHkxeWFXZG9kQXBpY21WaFpHTnlkVzFpQ1dOb1pXTnJiV0Z5YXdWamJHOXpaUWRqYjI1bWFYSnRCR2x1Wm04RWJXVnVkUVJ0YjNKbEJYQmhkWE5sQkhCc1lYa0tkSEpwWVc1bmJHVXRjeEIxYzJWeUxYTjBZWFIxY3kxaGQyRjVEM1Z6WlhJdGMzUmhkSFZ6TFdSdVpCVjFjMlZ5TFhOMFlYUjFjeTFwYm5acGMybGliR1VTZFhObGNpMXpkR0YwZFhNdGIyNXNhVzVsQUFBPVwiIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKdWxpdXMgSMOkcnRsIDxqdXNAYml0Z3JpZC5uZXQ+XG4gKlxuICogQGF1dGhvciBKdWxpdXMgSMOkcnRsIDxqdXNAYml0Z3JpZC5uZXQ+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgdXNlcm5hbWVUb0NvbG9yIGZyb20gJy4vdXNlcm5hbWVUb0NvbG9yJ1xuXG5leHBvcnQgZGVmYXVsdCB1c2VybmFtZVRvQ29sb3JcbiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTggSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cblxuaW1wb3J0IG1kNSBmcm9tICdtZDUnXG5pbXBvcnQgR2VuQ29sb3JzIGZyb20gJy4uLy4uL3V0aWxzL0dlbkNvbG9ycydcblxuLyoqXG4gKiBPcmlnaW5hbGx5IHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL25leHRjbG91ZC9zZXJ2ZXIvYmxvYi9tYXN0ZXIvY29yZS9qcy9wbGFjZWhvbGRlci5qc1xuICogQHBhcmFtIHtzdHJpbmd9IHVzZXJuYW1lIERpc3BsYXkgbmFtZSBvciB1c2VyIGlkIHRvIGdlbmVyYXRlIGZyb21cbiAqIEByZXR1cm5zIHtPYmplY3R9IHRoZSByZ2IgY29sb3JzIGFzIHtyOjI1NSwgZzoyNTUsIGI6MjU1fVxuICovXG5jb25zdCB1c2VybmFtZVRvQ29sb3IgPSBmdW5jdGlvbih1c2VybmFtZSkge1xuXHQvLyBOb3JtYWxpemUgaGFzaFxuXHRsZXQgaGFzaCA9IHVzZXJuYW1lLnRvTG93ZXJDYXNlKClcblxuXHQvLyBBbHJlYWR5IGEgbWQ1IGhhc2g/XG5cdGlmIChoYXNoLm1hdGNoKC9eKFswLTlhLWZdezR9LT8pezh9JC8pID09PSBudWxsKSB7XG5cdFx0aGFzaCA9IG1kNShoYXNoKVxuXHR9XG5cblx0aGFzaCA9IGhhc2gucmVwbGFjZSgvW14wLTlhLWZdL2csICcnKVxuXG5cdGNvbnN0IHN0ZXBzID0gNlxuXHRjb25zdCBmaW5hbFBhbGV0dGUgPSBHZW5Db2xvcnMoc3RlcHMpXG5cblx0Ly8gQ29udmVydCBhIHN0cmluZyB0byBhbiBpbnRlZ2VyIGV2ZW5seVxuXHRmdW5jdGlvbiBoYXNoVG9JbnQoaGFzaCwgbWF4aW11bSkge1xuXHRcdGxldCBmaW5hbEludCA9IDBcblx0XHRjb25zdCByZXN1bHQgPSBbXVxuXG5cdFx0Ly8gU3BsaXR0aW5nIGV2ZW5seSB0aGUgc3RyaW5nXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBoYXNoLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHQvLyBjaGFycyBpbiBtZDUgZ29lcyB1cCB0byBmLCBoZXg6MTZcblx0XHRcdHJlc3VsdC5wdXNoKHBhcnNlSW50KGhhc2guY2hhckF0KGkpLCAxNikgJSAxNilcblx0XHR9XG5cblx0XHQvLyBBZGRzIHVwIGFsbCByZXN1bHRzXG5cdFx0Zm9yIChjb25zdCBqIGluIHJlc3VsdCkge1xuXHRcdFx0ZmluYWxJbnQgKz0gcmVzdWx0W2pdXG5cdFx0fVxuXG5cdFx0Ly8gY2hhcnMgaW4gbWQ1IGdvZXMgdXAgdG8gZiwgaGV4OjE2XG5cdFx0Ly8gbWFrZSBzdXJlIHdlJ3JlIGFsd2F5cyB1c2luZyBpbnQgaW4gb3VyIG9wZXJhdGlvblxuXHRcdHJldHVybiBwYXJzZUludChwYXJzZUludChmaW5hbEludCwgMTApICUgbWF4aW11bSwgMTApXG5cdH1cblx0cmV0dXJuIGZpbmFsUGFsZXR0ZVtoYXNoVG9JbnQoaGFzaCwgc3RlcHMgKiAzKV1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlcm5hbWVUb0NvbG9yXG4iLCJpbXBvcnQgeyBnZXRHZXR0ZXh0QnVpbGRlciB9IGZyb20gJ0BuZXh0Y2xvdWQvbDEwbi9kaXN0L2dldHRleHQnXG5cbmNvbnN0IGd0QnVpbGRlciA9IGdldEdldHRleHRCdWlsZGVyKClcblx0LmRldGVjdExvY2FsZSgpXG5cbi8vIERlY29tcHJlc3MgVHJhbnNsYXRpb25zIHRvIGdldHRleHQgZm9ybWF0IGFuZCBhZGQgdG8gZ3RCdWlsZGVyXG5UUkFOU0xBVElPTlMuZm9yRWFjaCgobGFuZykgPT4ge1xuXHRjb25zdCB0cmFuc2xhdGlvbnMgPSB7fVxuXG5cdGZvciAoY29uc3Qga2V5IGluIGxhbmcudHJhbnNsYXRpb25zKSB7XG5cdFx0Ly8gUGx1cmFsXG5cdFx0aWYgKGxhbmcudHJhbnNsYXRpb25zW2tleV0ucGx1cmFsSWQpIHtcblx0XHRcdHRyYW5zbGF0aW9uc1trZXldID0ge1xuXHRcdFx0XHRtc2dpZDoga2V5LFxuXHRcdFx0XHRtc2dpZF9wbHVyYWw6IGxhbmcudHJhbnNsYXRpb25zW2tleV0ucGx1cmFsSWQsXG5cdFx0XHRcdG1zZ3N0cjogbGFuZy50cmFuc2xhdGlvbnNba2V5XS5tc2dzdHIsXG5cdFx0XHR9XG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblxuXHRcdC8vIFNpbmd1bGFyXG5cdFx0dHJhbnNsYXRpb25zW2tleV0gPSB7XG5cdFx0XHRtc2dpZDoga2V5LFxuXHRcdFx0bXNnc3RyOiBbXG5cdFx0XHRcdGxhbmcudHJhbnNsYXRpb25zW2tleV0sXG5cdFx0XHRdLFxuXHRcdH1cblx0fVxuXG5cdGd0QnVpbGRlci5hZGRUcmFuc2xhdGlvbihsYW5nLmxvY2FsZSwge1xuXHRcdHRyYW5zbGF0aW9uczoge1xuXHRcdFx0Jyc6IHRyYW5zbGF0aW9ucyxcblx0XHR9LFxuXHR9KVxufSlcblxuY29uc3QgZ3QgPSBndEJ1aWxkZXIuYnVpbGQoKVxuXG5jb25zdCBuID0gZ3QubmdldHRleHQuYmluZChndClcbmNvbnN0IHQgPSBndC5nZXR0ZXh0LmJpbmQoZ3QpXG5cbmV4cG9ydCB7IHQsIG4gfVxuIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAyMCBHZW9yZyBFaHJrZSA8Z2VvcmctbmV4dGNsb3VkQGVocmtlLmVtYWlsPlxuICpcbiAqIEBhdXRob3IgR2VvcmcgRWhya2UgPGdlb3JnLW5leHRjbG91ZEBlaHJrZS5lbWFpbD5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0cHJvcHM6IHtcblx0XHQvKipcblx0XHQgKiBBIGNsYXNzLW5hbWUgb3IgYW4gYXJyYXkgb2YgY2xhc3MtbmFtZXNcblx0XHQgKiB0byBiZSBpZ25vcmVkIHdoZW4gY2xpY2tpbmcgb3V0c2lkZVxuXHRcdCAqIGFuIGVsZW1lbnRcblx0XHQgKi9cblx0XHRleGNsdWRlQ2xpY2tPdXRzaWRlQ2xhc3Nlczoge1xuXHRcdFx0dHlwZTogU3RyaW5nIHwgQXJyYXksXG5cdFx0XHRkZWZhdWx0OiAoKSA9PiBbXSxcblx0XHR9LFxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0LyoqXG5cdFx0ICogTWlkZGxld2FyZSBIYW5kbGVyIGZvciBWLUNsaWNrLU91dHNpZGVcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IFRoZSBjbGljayBldmVudFxuXHRcdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHRcdCAqL1xuXHRcdGNsaWNrT3V0c2lkZU1pZGRsZXdhcmUoZXZlbnQpIHtcblx0XHRcdGNvbnN0IGV4Y2x1ZGVkQ2xhc3NMaXN0ID0gQXJyYXkuaXNBcnJheSh0aGlzLmV4Y2x1ZGVDbGlja091dHNpZGVDbGFzc2VzKVxuXHRcdFx0XHQ/IHRoaXMuZXhjbHVkZUNsaWNrT3V0c2lkZUNsYXNzZXNcblx0XHRcdFx0OiBbdGhpcy5leGNsdWRlQ2xpY2tPdXRzaWRlQ2xhc3Nlc11cblxuXHRcdFx0Ly8gTm8gbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHBhcmVudHNcblx0XHRcdC8vIGlmIGNsYXNzLWxpc3QgaXMgZW1wdHlcblx0XHRcdGlmIChleGNsdWRlZENsYXNzTGlzdC5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICF0aGlzLmhhc05vZGVPckFueVBhcmVudENsYXNzKGV2ZW50LnRhcmdldCwgZXhjbHVkZWRDbGFzc0xpc3QpXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBDaGVja3MgaWYgZ2l2ZW4gbm9kZSBvciBhbnkgb2YgaXQncyBwYXJlbnRzIGhhdmUgYSBjbGFzcyBvZiBjbGFzc0FycmF5XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGUgTm9kZSB0byB0ZXN0XG5cdFx0ICogQHBhcmFtIHtBcnJheX0gY2xhc3NBcnJheSBMaXN0IG9mIGNsYXNzZXMgdG8gY2hlY2sgZm9yXG5cdFx0ICogQHJldHVybnMge0Jvb2xlYW59XG5cdFx0ICovXG5cdFx0aGFzTm9kZU9yQW55UGFyZW50Q2xhc3Mobm9kZSwgY2xhc3NBcnJheSkge1xuXHRcdFx0Zm9yIChjb25zdCBjbGFzc05hbWUgb2YgY2xhc3NBcnJheSkge1xuXHRcdFx0XHRpZiAobm9kZT8uY2xhc3NMaXN0Py5jb250YWlucyhjbGFzc05hbWUpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gISFub2RlLnBhcmVudEVsZW1lbnQgJiYgdGhpcy5oYXNOb2RlT3JBbnlQYXJlbnRDbGFzcyhub2RlLnBhcmVudEVsZW1lbnQsIGNsYXNzQXJyYXkpXG5cdFx0fSxcblx0fSxcbn1cbiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTggSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgZXhjbHVkZUNsaWNrT3V0c2lkZUNsYXNzZXMgZnJvbSAnLi9leGNsdWRlQ2xpY2tPdXRzaWRlQ2xhc3NlcydcbmltcG9ydCBpc0Z1bGxzY3JlZW4gZnJvbSAnLi9pc0Z1bGxzY3JlZW4nXG5pbXBvcnQgaXNNb2JpbGUgZnJvbSAnLi9pc01vYmlsZSdcbmltcG9ydCByaWNoRWRpdG9yIGZyb20gJy4vcmljaEVkaXRvcidcbmltcG9ydCB1c2VyU3RhdHVzIGZyb20gJy4vdXNlclN0YXR1cydcblxuZXhwb3J0IHtcblx0ZXhjbHVkZUNsaWNrT3V0c2lkZUNsYXNzZXMsXG5cdGlzRnVsbHNjcmVlbixcblx0aXNNb2JpbGUsXG5cdHJpY2hFZGl0b3IsXG5cdHVzZXJTdGF0dXMsXG59XG4iLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRpc0Z1bGxzY3JlZW46IHRoaXMuX2lzRnVsbHNjcmVlbigpLFxuXHRcdH1cblx0fSxcblx0YmVmb3JlTW91bnQoKSB7XG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX29uUmVzaXplKVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9vblJlc2l6ZSlcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdF9vblJlc2l6ZSgpIHtcblx0XHRcdC8vIFVwZGF0ZSBmdWxsc2NyZWVuIG1vZGVcblx0XHRcdHRoaXMuaXNGdWxsc2NyZWVuID0gdGhpcy5faXNGdWxsc2NyZWVuKClcblx0XHR9LFxuXHRcdF9pc0Z1bGxzY3JlZW4oKSB7XG5cdFx0XHQvLyBpZiB0aGUgd2luZG93IGhlaWdodCBpcyBlcXVhbCB0byB0aGUgc2NyZWVuIGhlaWdodCxcblx0XHRcdC8vIHdlJ3JlIGluIGZ1bGwgc2NyZWVuIG1vZGVcblx0XHRcdHJldHVybiB3aW5kb3cub3V0ZXJIZWlnaHQgPT09IHNjcmVlbi5oZWlnaHRcblx0XHR9LFxuXHR9LFxufVxuIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmltcG9ydCB7IElzTW9iaWxlU3RhdGUgfSBmcm9tICcuLi8uLi91dGlscy9Jc01vYmlsZVN0YXRlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGlzTW9iaWxlOiBmYWxzZSxcblx0XHR9XG5cdH0sXG5cdG1vdW50ZWQoKSB7XG5cdFx0SXNNb2JpbGVTdGF0ZS4kb24oJ2NoYW5nZWQnLCB0aGlzLm9uSXNNb2JpbGVDaGFuZ2VkKVxuXHRcdHRoaXMuaXNNb2JpbGUgPSBJc01vYmlsZVN0YXRlLmlzTW9iaWxlXG5cdH0sXG5cdGJlZm9yZURlc3Ryb3koKSB7XG5cdFx0SXNNb2JpbGVTdGF0ZS4kb2ZmKCdjaGFuZ2VkJywgdGhpcy5vbklzTW9iaWxlQ2hhbmdlZClcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdG9uSXNNb2JpbGVDaGFuZ2VkKHZhbCkge1xuXHRcdFx0dGhpcy5pc01vYmlsZSA9IHZhbFxuXHRcdH0sXG5cdH0sXG59XG4iLCJpbXBvcnQgeyBuLCB0IH0gZnJvbSAnLi4vbDEwbidcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRtZXRob2RzOiB7XG5cdFx0bixcblx0XHR0LFxuXHR9LFxufVxuIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAyMCBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmltcG9ydCBlc2NhcGVIdG1sIGZyb20gJ2VzY2FwZS1odG1sJ1xuaW1wb3J0IGxpbmtpZnlTdHIgZnJvbSAnbGlua2lmeWpzL3N0cmluZydcbmltcG9ydCBzdHJpcFRhZ3MgZnJvbSAnc3RyaXB0YWdzJ1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5cbmltcG9ydCBNZW50aW9uQnViYmxlIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvUmljaENvbnRlbnRlZGl0YWJsZS9NZW50aW9uQnViYmxlJ1xuXG4vLyBCZWdpbm5pbmcgb3Igd2hpdGVzcGFjZS4gTm9uLWNhcHR1cmluZyBncm91cFxuY29uc3QgTUVOVElPTl9TVEFSVCA9ICcoPzpefFxcXFxzKSdcbi8vIEFueXRoaW5nIHRoYXQgaXMgbm90IHRleHQgb3IgZW5kLW9mLWxpbmUuIE5vbi1jYXB0dXJpbmcgZ3JvdXBcbmNvbnN0IE1FTlRJT05fRU5EID0gJyg/OlteYS16XXwkKSdcbmV4cG9ydCBjb25zdCBVU0VSSURfUkVHRVggPSBuZXcgUmVnRXhwKGAke01FTlRJT05fU1RBUlR9KEBbYS16QS1aMC05Xy5AXFxcXC0nXSspKCR7TUVOVElPTl9FTkR9KWAsICdnaScpXG5leHBvcnQgY29uc3QgVVNFUklEX1JFR0VYX1dJVEhfU1BBQ0UgPSBuZXcgUmVnRXhwKGAke01FTlRJT05fU1RBUlR9KEBcIlthLXpBLVowLTkgXy5AXFxcXC0nXStcIikoJHtNRU5USU9OX0VORH0pYCwgJ2dpJylcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRwcm9wczoge1xuXHRcdHVzZXJEYXRhOiB7XG5cdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRkZWZhdWx0OiAoKSA9PiAoe30pLFxuXHRcdH0sXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHQvKipcblx0XHQgKiBDb252ZXJ0IHRoZSB2YWx1ZSBzdHJpbmcgdG8gaHRtbCBmb3IgdGhlIGlubmVyIGNvbnRlbnRcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSB0aGUgY29udGVudCB3aXRob3V0IGh0bWxcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfSByZW5kZXJlZCBodG1sXG5cdFx0ICovXG5cdFx0cmVuZGVyQ29udGVudCh2YWx1ZSkge1xuXHRcdFx0Ly8gU2FuaXRpemUgdGhlIHZhbHVlIHByb3Bcblx0XHRcdGNvbnN0IHNhbml0aXplZFZhbHVlID0gZXNjYXBlSHRtbCh2YWx1ZSlcblxuXHRcdFx0Ly8gRXh0cmFjdCBhbGwgdGhlIHVzZXJJZHNcblx0XHRcdGNvbnN0IHNwbGl0VmFsdWUgPSBzYW5pdGl6ZWRWYWx1ZS5zcGxpdChVU0VSSURfUkVHRVgpXG5cdFx0XHRcdC5tYXAocGFydCA9PiBwYXJ0LnNwbGl0KFVTRVJJRF9SRUdFWF9XSVRIX1NQQUNFKSkuZmxhdCgpXG5cblx0XHRcdC8vIFJlcGxhY2UgdXNlcklkcyBieSBodG1sXG5cdFx0XHRyZXR1cm4gc3BsaXRWYWx1ZVxuXHRcdFx0XHQubWFwKHBhcnQgPT4ge1xuXHRcdFx0XHRcdC8vIFdoZW4gc3BsaXR0aW5nLCB0aGUgc3RyaW5nIGlzIGFsd2F5cyBwdXR0aW5nIHRoZSB1c2VySWRzXG5cdFx0XHRcdFx0Ly8gb24gdGhlIHRoZSB1bmV2ZW4gaW5kZXhlcy4gV2Ugb25seSB3YW50IHRvIGdlbmVyYXRlIHRoZSBtZW50aW9ucyBodG1sXG5cdFx0XHRcdFx0aWYgKCFwYXJ0LnN0YXJ0c1dpdGgoJ0AnKSkge1xuXHRcdFx0XHRcdFx0Ly8gVGhpcyBwYXJ0IGRvZXNuJ3QgY29udGFpbiBhIG1lbnRpb24sIGxldCdzIG1ha2Ugc3VyZSBsaW5rcyBhcmUgcGFyc2VkXG5cdFx0XHRcdFx0XHRyZXR1cm4gbGlua2lmeVN0cihwYXJ0LCB7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRQcm90b2NvbDogJ2h0dHBzJyxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnZXh0ZXJuYWwnLFxuXHRcdFx0XHRcdFx0XHRhdHRyaWJ1dGVzOiB7XG5cdFx0XHRcdFx0XHRcdFx0cmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEV4dHJhY3RpbmcgdGhlIGlkLCBudWtpbmcgdGhlIFwiIGFuZCBAXG5cdFx0XHRcdFx0Y29uc3QgaWQgPSBwYXJ0LnJlcGxhY2UoL1tAXCJdL2dpLCAnJylcblxuXHRcdFx0XHRcdC8vIENvbXBpbGluZyB0ZW1wbGF0ZSBhbmQgcHJlcGVuZCB3aXRoIHRoZSBzcGFjZSB3ZSByZW1vdmVkIGR1cmluZyB0aGUgc3BsaXRcblx0XHRcdFx0XHRyZXR1cm4gJyAnICsgdGhpcy5nZW5TZWxlY3RUZW1wbGF0ZShpZClcblx0XHRcdFx0fSlcblx0XHRcdFx0LmpvaW4oJycpXG5cdFx0XHRcdC5yZXBsYWNlKC9cXG4vZ21pLCAnPGJyPicpXG5cdFx0XHRcdC5yZXBsYWNlKC8mYW1wOy9nbWksICcmJylcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQ29udmVydCB0aGUgaW5uZXJIdG1sIGNvbnRlbnQgdG8gYSBzdHJpbmcgd2l0aCBtZW50aW9ucyBhcyB0ZXh0XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB0aGUgY29udGVudCB3aXRob3V0IGh0bWxcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHBhcnNlQ29udGVudChjb250ZW50KSB7XG5cdFx0XHRsZXQgdGV4dCA9IGNvbnRlbnQucmVwbGFjZSgvPGJyPi9nbWksICdcXG4nKVxuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSgvJm5ic3A7L2dtaSwgJyAnKVxuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSgvJmFtcDsvZ21pLCAnJicpXG5cblx0XHRcdC8vIENvbnZlcnQgdGhlIG1lbnRpb25zIHRvIHRleHQgb25seVxuXHRcdFx0Ly8gZmlyc3Qgd2UgcmVwbGFjZSBkaXZzIHdpdGggbmV3IGxpbmVzXG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvZGl2Pi9nbWksICdcXG4nKVxuXHRcdFx0Ly8gdGhlbiB3ZSByZW1vdmUgYWxsIGxlZnRvdmVyIGh0bWxcblx0XHRcdHRleHQgPSBzdHJpcFRhZ3ModGV4dCwgJzxkaXY+Jylcblx0XHRcdHRleHQgPSBzdHJpcFRhZ3ModGV4dClcblxuXHRcdFx0cmV0dXJuIHRleHRcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogR2VuZXJhdGUgYW4gYXV0b2NvbXBsZXRpb24gcG9wdXAgZW50cnkgdGVtcGxhdGVcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSB0aGUgdmFsdWUgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgdXNlckRhdGFcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGdlblNlbGVjdFRlbXBsYXRlKHZhbHVlKSB7XG5cdFx0XHRjb25zdCBkYXRhID0gdGhpcy51c2VyRGF0YVt2YWx1ZV1cblxuXHRcdFx0Ly8gRmFsbGJhY2sgdG8gQG1lbnRpb24gaW4gY2FzZSBubyBkYXRhIG1hdGNoZXNcblx0XHRcdGlmICghZGF0YSkge1xuXHRcdFx0XHQvLyByZXR1cm4gYEAke3ZhbHVlfWBcblx0XHRcdFx0cmV0dXJuIHZhbHVlLmluZGV4T2YoJyAnKSA9PT0gLTFcblx0XHRcdFx0XHQ/IGBAJHt2YWx1ZX1gXG5cdFx0XHRcdFx0OiBgQFwiJHt2YWx1ZX1cImBcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIHRlbXBsYXRlIGFuZCBtYWtlIHN1cmUgd2Ugc3RyaXAgb2YgbmV3IGxpbmVzIGFuZCB0YWJzXG5cdFx0XHRyZXR1cm4gdGhpcy5yZW5kZXJDb21wb25lbnRIdG1sKGRhdGEsIE1lbnRpb25CdWJibGUpLnJlcGxhY2UoL1tcXG5cXHRdL2dtaSwgJycpXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFJlbmRlciBhIGNvbXBvbmVudCBhbmQgcmV0dXJuIGl0cyBodG1sIGNvbnRlbnRcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc0RhdGEgdGhlIHByb3BzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBjb21wb25lbnQgdGhlIGNvbXBvbmVudCB0byByZW5kZXJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgcmVuZGVyZWQgaHRtbFxuXHRcdCAqL1xuXHRcdHJlbmRlckNvbXBvbmVudEh0bWwocHJvcHNEYXRhLCBjb21wb25lbnQpIHtcblx0XHRcdGNvbnN0IFZpZXcgPSBWdWUuZXh0ZW5kKGNvbXBvbmVudClcblx0XHRcdGNvbnN0IEl0ZW0gPSBuZXcgVmlldyh7XG5cdFx0XHRcdHByb3BzRGF0YSxcblx0XHRcdH0pXG5cblx0XHRcdC8vIFByZXBhcmUgbW91bnRwb2ludFxuXHRcdFx0Y29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG5cdFx0XHRjb25zdCBtb3VudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG5cdFx0XHR3cmFwcGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcblx0XHRcdHdyYXBwZXIuYXBwZW5kQ2hpbGQobW91bnQpXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHdyYXBwZXIpXG5cblx0XHRcdC8vIE1vdW50IGFuZCBnZXQgcmF3IGh0bWxcblx0XHRcdEl0ZW0uJG1vdW50KG1vdW50KVxuXHRcdFx0Y29uc3QgcmVuZGVyZWRIdG1sID0gd3JhcHBlci5pbm5lckhUTUxcblxuXHRcdFx0Ly8gRGVzdHJveVxuXHRcdFx0SXRlbS4kZGVzdHJveSgpXG5cdFx0XHR3cmFwcGVyLnJlbW92ZSgpXG5cblx0XHRcdHJldHVybiByZW5kZXJlZEh0bWxcblx0XHR9LFxuXHR9LFxufVxuIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAyMCBHZW9yZyBFaHJrZSA8Z2VvcmctbmV4dGNsb3VkQGVocmtlLmVtYWlsPlxuICpcbiAqIEBhdXRob3IgR2VvcmcgRWhya2UgPGdlb3JnLW5leHRjbG91ZEBlaHJrZS5lbWFpbD5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5pbXBvcnQgYXhpb3MgZnJvbSAnQG5leHRjbG91ZC9heGlvcydcbmltcG9ydCB7IGdlbmVyYXRlT2NzVXJsIH0gZnJvbSAnQG5leHRjbG91ZC9yb3V0ZXInXG5pbXBvcnQgeyBnZXRDYXBhYmlsaXRpZXMgfSBmcm9tICdAbmV4dGNsb3VkL2NhcGFiaWxpdGllcydcbmltcG9ydCB7IGdldEN1cnJlbnRVc2VyIH0gZnJvbSAnQG5leHRjbG91ZC9hdXRoJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGhhc1N0YXR1czogZmFsc2UsXG5cdFx0XHR1c2VyU3RhdHVzOiB7XG5cdFx0XHRcdHN0YXR1czogbnVsbCxcblx0XHRcdFx0bWVzc2FnZTogbnVsbCxcblx0XHRcdFx0aWNvbjogbnVsbCxcblx0XHRcdH0sXG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0LyoqXG5cdFx0ICogRmV0Y2hlcyB0aGUgdXNlci1zdGF0dXMgZnJvbSB0aGUgc2VydmVyXG5cdFx0ICogQHBhcmFtIHtTdHJpbmd9IHVzZXJJZCBVc2VySWQgb2YgdGhlIHVzZXIgdG8gZmV0Y2ggdGhlIHN0YXR1cyBmb3Jcblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuXHRcdCAqL1xuXHRcdGFzeW5jIGZldGNoVXNlclN0YXR1cyh1c2VySWQpIHtcblx0XHRcdGNvbnN0IGNhcGFiaWxpdGllcyA9IGdldENhcGFiaWxpdGllcygpXG5cdFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjYXBhYmlsaXRpZXMsICd1c2VyX3N0YXR1cycpIHx8ICFjYXBhYmlsaXRpZXMudXNlcl9zdGF0dXMuZW5hYmxlZCkge1xuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblxuXHRcdFx0Ly8gVXNlciBzdGF0dXMgZW5kcG9pbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgZ3Vlc3RzLlxuXHRcdFx0aWYgKCFnZXRDdXJyZW50VXNlcigpKSB7XG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldChnZW5lcmF0ZU9jc1VybCgnYXBwcy91c2VyX3N0YXR1cy9hcGkvdjEnLCAyKSArIGBzdGF0dXNlcy8ke2VuY29kZVVSSUNvbXBvbmVudCh1c2VySWQpfWApXG5cdFx0XHRcdGNvbnN0IHtcblx0XHRcdFx0XHRzdGF0dXMsXG5cdFx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0XHRpY29uLFxuXHRcdFx0XHR9ID0gZGF0YS5vY3MuZGF0YVxuXHRcdFx0XHR0aGlzLnVzZXJTdGF0dXMuc3RhdHVzID0gc3RhdHVzXG5cdFx0XHRcdHRoaXMudXNlclN0YXR1cy5tZXNzYWdlID0gbWVzc2FnZSB8fCAnJ1xuXHRcdFx0XHR0aGlzLnVzZXJTdGF0dXMuaWNvbiA9IGljb24gfHwgJydcblx0XHRcdFx0dGhpcy5oYXNTdGF0dXMgPSB0cnVlXG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGlmIChlLnJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0ICYmIGUucmVzcG9uc2UuZGF0YS5vY3M/LmRhdGE/Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdC8vIFVzZXIganVzdCBoYXMgbm8gc3RhdHVzIHNldCwgc28gZG9uJ3QgbG9nIGl0XG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5lcnJvcihlKVxuXHRcdFx0fVxuXHRcdH0sXG5cdH0sXG59XG4iLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDIwIFJhaW11bmQgU2NobMO8w59sZXIgPHJhaW11bmQuc2NobHVlc3NsZXJAbWFpbGJveC5vcmc+XG4gKlxuICogQGF1dGhvciBSYWltdW5kIFNjaGzDvMOfbGVyIDxyYWltdW5kLnNjaGx1ZXNzbGVyQG1haWxib3gub3JnPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbi8qKlxuICogRmluZCB0aGUgcmFuZ2VzIG9mIGEgc3Vic3RyIGluIGEgZ2l2ZW4gc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRleHQgVGhlIHRleHQgdG8gc2VhcmNoIGluXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VhcmNoIFRoZSB0ZXh0IHRvIHNlYXJjaCBmb3JcbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIGFycmF5IG9mIHJhbmdlcyB0byBoaWdobGlnaHRcbiAqL1xuY29uc3QgRmluZFJhbmdlcyA9ICh0ZXh0LCBzZWFyY2gpID0+IHtcblx0Y29uc3QgcmFuZ2VzID0gW11cblx0bGV0IGN1cnJlbnRJbmRleCA9IDBcblx0bGV0IGluZGV4ID0gdGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCksIGN1cnJlbnRJbmRleClcblx0Ly8gVmFyaWFibGUgdG8gdHJhY2sgdGhhdCB3ZSBkb24ndCBpdGVyYXRlIG1vcmUgb2Z0ZW4gdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LlxuXHQvLyBTaG91bGRuJ3QgaGFwcGVuIGFueXdheSwgYnV0IGp1c3QgdG8gYmUgc3VyZSB0byBub3QgaGFuZyB0aGUgYnJvd3NlciBmb3Igc29tZSByZWFzb24uXG5cdGxldCBpID0gMFxuXHR3aGlsZSAoaW5kZXggPiAtMSAmJiBpIDwgdGV4dC5sZW5ndGgpIHtcblx0XHRjdXJyZW50SW5kZXggPSBpbmRleCArIHNlYXJjaC5sZW5ndGhcblx0XHRyYW5nZXMucHVzaCh7IHN0YXJ0OiBpbmRleCwgZW5kOiBjdXJyZW50SW5kZXggfSlcblxuXHRcdGluZGV4ID0gdGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCksIGluZGV4ICsgMSlcblx0XHRpKytcblx0fVxuXHRyZXR1cm4gcmFuZ2VzXG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpbmRSYW5nZXNcbiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG4vKipcbiAqIE9yaWdpbmFsbHkgdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbmV4dGNsb3VkL3NlcnZlci9ibG9iL21hc3Rlci9jb3JlL2pzL3BsYWNlaG9sZGVyLmpzXG4gKi9cblxuZnVuY3Rpb24gQ29sb3IociwgZywgYikge1xuXHR0aGlzLnIgPSByXG5cdHRoaXMuZyA9IGdcblx0dGhpcy5iID0gYlxufVxuXG5mdW5jdGlvbiBzdGVwQ2FsYyhzdGVwcywgZW5kcykge1xuXHRjb25zdCBzdGVwID0gbmV3IEFycmF5KDMpXG5cdHN0ZXBbMF0gPSAoZW5kc1sxXS5yIC0gZW5kc1swXS5yKSAvIHN0ZXBzXG5cdHN0ZXBbMV0gPSAoZW5kc1sxXS5nIC0gZW5kc1swXS5nKSAvIHN0ZXBzXG5cdHN0ZXBbMl0gPSAoZW5kc1sxXS5iIC0gZW5kc1swXS5iKSAvIHN0ZXBzXG5cdHJldHVybiBzdGVwXG59XG5cbmZ1bmN0aW9uIG1peFBhbGV0dGUoc3RlcHMsIGNvbG9yMSwgY29sb3IyKSB7XG5cdGNvbnN0IHBhbGV0dGUgPSBbXVxuXHRwYWxldHRlLnB1c2goY29sb3IxKVxuXHRjb25zdCBzdGVwID0gc3RlcENhbGMoc3RlcHMsIFtjb2xvcjEsIGNvbG9yMl0pXG5cdGZvciAobGV0IGkgPSAxOyBpIDwgc3RlcHM7IGkrKykge1xuXHRcdGNvbnN0IHIgPSBwYXJzZUludChjb2xvcjEuciArIHN0ZXBbMF0gKiBpLCAxMClcblx0XHRjb25zdCBnID0gcGFyc2VJbnQoY29sb3IxLmcgKyBzdGVwWzFdICogaSwgMTApXG5cdFx0Y29uc3QgYiA9IHBhcnNlSW50KGNvbG9yMS5iICsgc3RlcFsyXSAqIGksIDEwKVxuXHRcdHBhbGV0dGUucHVzaChuZXcgQ29sb3IociwgZywgYikpXG5cdH1cblx0cmV0dXJuIHBhbGV0dGVcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBjb2xvcnMgZnJvbSB0aGUgb2ZmaWNpYWwgbmV4dGNsb3VkIGNvbG9yXG4gKiBZb3UgY2FuIHByb3ZpZGUgaG93IG1hbnkgY29sb3JzIHlvdSB3YW50IChtdWx0aXBsaWVkIGJ5IDMpXG4gKiBpZiBzdGVwID0gNlxuICogMyBjb2xvcnMgKiA2IHdpbGwgcmVzdWx0IGluIDE4IGdlbmVyYXRlZCBjb2xvcnNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXBzPTZdIE51bWJlciBvZiBzdGVwcyB0byBnbyBmcm9tIGEgY29sb3IgdG8gYW5vdGhlclxuICogQHJldHVybnMge09iamVjdFtdfVxuICovXG5mdW5jdGlvbiBHZW5Db2xvcnMoc3RlcHMpIHtcblx0aWYgKCFzdGVwcykge1xuXHRcdHN0ZXBzID0gNlxuXHR9XG5cblx0Y29uc3QgcmVkID0gbmV3IENvbG9yKDE4MiwgNzAsIDE1Nylcblx0Y29uc3QgeWVsbG93ID0gbmV3IENvbG9yKDIyMSwgMjAzLCA4NSlcblx0Y29uc3QgYmx1ZSA9IG5ldyBDb2xvcigwLCAxMzAsIDIwMSkgLy8gTmV4dGNsb3VkIGJsdWVcblxuXHRjb25zdCBwYWxldHRlMSA9IG1peFBhbGV0dGUoc3RlcHMsIHJlZCwgeWVsbG93KVxuXHRjb25zdCBwYWxldHRlMiA9IG1peFBhbGV0dGUoc3RlcHMsIHllbGxvdywgYmx1ZSlcblx0Y29uc3QgcGFsZXR0ZTMgPSBtaXhQYWxldHRlKHN0ZXBzLCBibHVlLCByZWQpXG5cblx0cmV0dXJuIHBhbGV0dGUxLmNvbmNhdChwYWxldHRlMikuY29uY2F0KHBhbGV0dGUzKVxufVxuXG5leHBvcnQgZGVmYXVsdCBHZW5Db2xvcnNcbiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgS3Jpc3RvZiBIYW1hbm4sIFBhdWwgU2Nod8O2cmVyXG4gKlxuICogQGF1dGhvciBLcmlzdG9mIEhhbWFublxuICogQGF1dGhvciBQYXVsIFNjaHfDtnJlclxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcblxuZXhwb3J0IGNvbnN0IElzTW9iaWxlU3RhdGUgPSBuZXcgVnVlKHtcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNNb2JpbGU6IGZhbHNlLFxuXHRcdH1cblx0fSxcblx0d2F0Y2g6IHtcblx0XHRpc01vYmlsZSh2YWwpIHtcblx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZWQnLCB2YWwpXG5cdFx0fSxcblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUpXG5cdFx0dGhpcy5oYW5kbGVXaW5kb3dSZXNpemUoKVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZSlcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcblx0XHRcdHRoaXMuaXNNb2JpbGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPCAxMDI0XG5cdFx0fSxcblx0fSxcbn0pXG4iLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cblxuY29uc3QgU2NvcGVDb21wb25lbnQgPSAoQ29tcG9uZW50KSA9PiB7XG5cdC8vIEluaXQgbW91bnRlZCB2dWUgaWYgbm9uZVxuXHRpZiAoIUNvbXBvbmVudC5tb3VudGVkKSB7XG5cdFx0Q29tcG9uZW50Lm1vdW50ZWQgPSBbXVxuXHR9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KENvbXBvbmVudC5tb3VudGVkKSkge1xuXHRcdENvbXBvbmVudC5tb3VudGVkID0gW0NvbXBvbmVudC5tb3VudGVkXVxuXHR9XG5cblx0Ly8gSW5qZWN0IHJvb3Qgc2NvcGluZyBmdW5jdGlvblxuXHRDb21wb25lbnQubW91bnRlZC5wdXNoKGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuJGVsLnNldEF0dHJpYnV0ZShgZGF0YS12LSR7U0NPUEVfVkVSU0lPTn1gLCAnJylcblx0fSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2NvcGVDb21wb25lbnRcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvYXV0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbmV4dGNsb3VkL2F4aW9zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvYnJvd3Nlci1zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvY2FwYWJpbGl0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvZXZlbnQtYnVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvbDEwbi9kaXN0L2dldHRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG5leHRjbG91ZC9yb3V0ZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mbGF0LmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmNvbnN0cnVjdG9yLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5jb25zdHJ1Y3Rvci5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5jb2RlLXBvaW50LWF0LmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5tYXRjaC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zZWFyY2guanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zcGxpdC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuaXRlcmF0b3IuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlc2NhcGUtaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsaW5raWZ5anMvc3RyaW5nXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1kNVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic3RyaXB0YWdzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInYtY2xpY2stb3V0c2lkZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ2LXRvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidnVlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInZ1ZS1tdWx0aXNlbGVjdFwiKTsiXSwic291cmNlUm9vdCI6IiJ9","'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.es/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.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/AppContent\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/AppContent\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/AppContent\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/components/AppContent/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=script&lang=js&\":\n/*!*************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppContent/AppContent.vue?vue&type=script&lang=js& ***!\n \\*************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! hammerjs */ \"hammerjs\");\n/* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(hammerjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/event-bus */ \"@nextcloud/event-bus\");\n/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_1__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/**\n * App content container to be used for the main content of your app\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AppContent',\n props: {\n // Allows to disable the control by swipe of the app navigation open state\n allowSwipeNavigation: {\n type: Boolean,\n default: true\n }\n },\n mounted: function mounted() {\n if (this.allowSwipeNavigation) {\n this.mc = new hammerjs__WEBPACK_IMPORTED_MODULE_0___default.a(this.$el, {\n cssProps: {\n userSelect: 'text'\n }\n });\n this.mc.on('swipeleft swiperight', this.handleSwipe);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.mc.off('swipeleft swiperight', this.handleSwipe);\n },\n methods: {\n // handle the swipe event\n handleSwipe: function handleSwipe(e) {\n var minSwipeX = 70;\n var touchzone = 40;\n var startX = e.srcEvent.pageX - e.deltaX;\n var hasEnoughDistance = Math.abs(e.deltaX) > minSwipeX;\n\n if (hasEnoughDistance && startX < touchzone) {\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_1__[\"emit\"])('toggle-navigation', {\n open: true\n });\n } else if (hasEnoughDistance && startX < touchzone + 300) {\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_1__[\"emit\"])('toggle-navigation', {\n open: false\n });\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true&\":\n/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true& ***!\n \\************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.app-content[data-v-71758b0f] {\\n position: relative;\\n z-index: 1000;\\n flex-basis: 100vw;\\n min-width: 0;\\n min-height: 100%;\\n margin: 0 !important;\\n background-color: var(--color-main-background);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./AppContent.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AA6DF;EACC,kBAAkB;EAClB,aAAa;EACb,iBAAiB;EACjB,YAAY;EACZ,gBAAgB;EAEhB,oBAAoB;EACpB,8CAA8C;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-content {\\n\\tposition: relative;\\n\\tz-index: 1000;\\n\\tflex-basis: 100vw;\\n\\tmin-width: 0;\\n\\tmin-height: 100%;\\n\\t// Overriding server styles TODO: cleanup!\\n\\tmargin: 0 !important;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/api.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/api.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true&\":\n/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true& ***!\n \\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_style_index_0_id_71758b0f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_style_index_0_id_71758b0f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_style_index_0_id_71758b0f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=template&id=71758b0f&scoped=true&\":\n/*!***************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppContent/AppContent.vue?vue&type=template&id=71758b0f&scoped=true& ***!\n \\***************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"main\",\n { staticClass: \"app-content no-snapper\", attrs: { id: \"app-content-vue\" } },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"./src/components/AppContent/AppContent.vue\":\n/*!**************************************************!*\\\n !*** ./src/components/AppContent/AppContent.vue ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppContent.vue?vue&type=template&id=71758b0f&scoped=true& */ \"./src/components/AppContent/AppContent.vue?vue&type=template&id=71758b0f&scoped=true&\");\n/* harmony import */ var _AppContent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppContent.vue?vue&type=script&lang=js& */ \"./src/components/AppContent/AppContent.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _AppContent_vue_vue_type_style_index_0_id_71758b0f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true& */ \"./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _AppContent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"71758b0f\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppContent/AppContent.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppContent/AppContent.vue?vue&type=script&lang=js&\":\n/*!***************************************************************************!*\\\n !*** ./src/components/AppContent/AppContent.vue?vue&type=script&lang=js& ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./AppContent.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true&\":\n/*!************************************************************************************************************!*\\\n !*** ./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true& ***!\n \\************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_style_index_0_id_71758b0f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=style&index=0&id=71758b0f&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppContent/AppContent.vue?vue&type=template&id=71758b0f&scoped=true&\":\n/*!*********************************************************************************************!*\\\n !*** ./src/components/AppContent/AppContent.vue?vue&type=template&id=71758b0f&scoped=true& ***!\n \\*********************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./AppContent.vue?vue&type=template&id=71758b0f&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppContent/AppContent.vue?vue&type=template&id=71758b0f&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppContent_vue_vue_type_template_id_71758b0f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppContent/index.js\":\n/*!********************************************!*\\\n !*** ./src/components/AppContent/index.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppContent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppContent */ \"./src/components/AppContent/AppContent.vue\");\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_AppContent__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"@nextcloud/event-bus\":\n/*!***************************************!*\\\n !*** external \"@nextcloud/event-bus\" ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/event-bus\");\n\n/***/ }),\n\n/***/ \"hammerjs\":\n/*!***************************!*\\\n !*** external \"hammerjs\" ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"hammerjs\");\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9BcHBDb250ZW50LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9BcHBDb250ZW50LnZ1ZT9mMzY2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9BcHBDb250ZW50LnZ1ZT8yYjk0Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcENvbnRlbnQvQXBwQ29udGVudC52dWU/YmNmNCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9BcHBDb250ZW50LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9BcHBDb250ZW50LnZ1ZT8yYmM2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBDb250ZW50L0FwcENvbnRlbnQudnVlPzE0MWQiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcENvbnRlbnQvQXBwQ29udGVudC52dWU/OTdiNiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9pbmRleC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiQG5leHRjbG91ZC9ldmVudC1idXNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiaGFtbWVyanNcIiJdLCJuYW1lcyI6WyJBcHBDb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25ELENBQUM7QUFDRCxPO1FDVkE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDakdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUc7QUFDdkM7QUFDTDtBQUNzQzs7O0FBRy9GO0FBQzZGO0FBQzdGLGdCQUFnQiwyR0FBVTtBQUMxQixFQUFFLGdGQUFNO0FBQ1IsRUFBRSxpR0FBTTtBQUNSLEVBQUUsMEdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxJQUFJLEtBQVUsRUFBRSxZQWlCZjtBQUNEO0FBQ2UsZ0Y7Ozs7Ozs7Ozs7OztBQ3ZDZjtBQUFBO0FBQUEsd0NBQWdMLENBQWdCLDhPQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7O0FDQXBNO0FBQUE7QUFBQSx3Qzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVlQSxrSEFBZixFOzs7Ozs7Ozs7OztBQ3RCQSxpRDs7Ozs7Ozs7Ozs7QUNBQSxxQyIsImZpbGUiOiJDb21wb25lbnRzL0FwcENvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIkNvbXBvbmVudHMvQXBwQ29udGVudFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJDb21wb25lbnRzL0FwcENvbnRlbnRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiTmV4dGNsb3VkVnVlXCJdID0gcm9vdFtcIk5leHRjbG91ZFZ1ZVwiXSB8fCB7fSwgcm9vdFtcIk5leHRjbG91ZFZ1ZVwiXVtcIkNvbXBvbmVudHMvQXBwQ29udGVudFwiXSA9IGZhY3RvcnkoKTtcbn0pKHdpbmRvdywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvY29tcG9uZW50cy9BcHBDb250ZW50L2luZGV4LmpzXCIpO1xuIiwiPCEtLVxuIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgQ2hyaXN0b3BoIFd1cnN0IDxjaHJpc3RvcGhAd2luemVyaG9mLXd1cnN0LmF0PlxuIC1cbiAtIEBhdXRob3IgQ2hyaXN0b3BoIFd1cnN0IDxjaHJpc3RvcGhAd2luemVyaG9mLXd1cnN0LmF0PlxuIC0gQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuIC0gQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gLVxuIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gLVxuIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuIC1cbiAtLT5cblxuPHRlbXBsYXRlPlxuXHQ8bWFpbiBpZD1cImFwcC1jb250ZW50LXZ1ZVwiIGNsYXNzPVwiYXBwLWNvbnRlbnQgbm8tc25hcHBlclwiPlxuXHRcdDwhLS0gQHNsb3QgUHJvdmlkZSBjb250ZW50IHRvIHRoZSBhcHAgY29udGVudCAtLT5cblx0XHQ8c2xvdCAvPlxuXHQ8L21haW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IEhhbW1lciBmcm9tICdoYW1tZXJqcydcbmltcG9ydCB7IGVtaXQgfSBmcm9tICdAbmV4dGNsb3VkL2V2ZW50LWJ1cydcblxuLyoqXG4gKiBBcHAgY29udGVudCBjb250YWluZXIgdG8gYmUgdXNlZCBmb3IgdGhlIG1haW4gY29udGVudCBvZiB5b3VyIGFwcFxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnQXBwQ29udGVudCcsXG5cblx0cHJvcHM6IHtcblx0XHQvLyBBbGxvd3MgdG8gZGlzYWJsZSB0aGUgY29udHJvbCBieSBzd2lwZSBvZiB0aGUgYXBwIG5hdmlnYXRpb24gb3BlbiBzdGF0ZVxuXHRcdGFsbG93U3dpcGVOYXZpZ2F0aW9uOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZSxcblx0XHR9LFxuXHR9LFxuXG5cdG1vdW50ZWQoKSB7XG5cdFx0aWYgKHRoaXMuYWxsb3dTd2lwZU5hdmlnYXRpb24pIHtcblx0XHRcdHRoaXMubWMgPSBuZXcgSGFtbWVyKHRoaXMuJGVsLCB7IGNzc1Byb3BzOiB7IHVzZXJTZWxlY3Q6ICd0ZXh0JyB9IH0pXG5cdFx0XHR0aGlzLm1jLm9uKCdzd2lwZWxlZnQgc3dpcGVyaWdodCcsIHRoaXMuaGFuZGxlU3dpcGUpXG5cdFx0fVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdHRoaXMubWMub2ZmKCdzd2lwZWxlZnQgc3dpcGVyaWdodCcsIHRoaXMuaGFuZGxlU3dpcGUpXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHQvLyBoYW5kbGUgdGhlIHN3aXBlIGV2ZW50XG5cdFx0aGFuZGxlU3dpcGUoZSkge1xuXHRcdFx0Y29uc3QgbWluU3dpcGVYID0gNzBcblx0XHRcdGNvbnN0IHRvdWNoem9uZSA9IDQwXG5cdFx0XHRjb25zdCBzdGFydFggPSBlLnNyY0V2ZW50LnBhZ2VYIC0gZS5kZWx0YVhcblx0XHRcdGNvbnN0IGhhc0Vub3VnaERpc3RhbmNlID0gTWF0aC5hYnMoZS5kZWx0YVgpID4gbWluU3dpcGVYXG5cdFx0XHRpZiAoaGFzRW5vdWdoRGlzdGFuY2UgJiYgc3RhcnRYIDwgdG91Y2h6b25lKSB7XG5cdFx0XHRcdGVtaXQoJ3RvZ2dsZS1uYXZpZ2F0aW9uJywge1xuXHRcdFx0XHRcdG9wZW46IHRydWUsXG5cdFx0XHRcdH0pXG5cdFx0XHR9IGVsc2UgaWYgKGhhc0Vub3VnaERpc3RhbmNlICYmIHN0YXJ0WCA8IHRvdWNoem9uZSArIDMwMCkge1xuXHRcdFx0XHRlbWl0KCd0b2dnbGUtbmF2aWdhdGlvbicsIHtcblx0XHRcdFx0XHRvcGVuOiBmYWxzZSxcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHR9LFxuXHR9LFxufVxuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG5cbi5hcHAtY29udGVudCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ei1pbmRleDogMTAwMDtcblx0ZmxleC1iYXNpczogMTAwdnc7XG5cdG1pbi13aWR0aDogMDtcblx0bWluLWhlaWdodDogMTAwJTtcblx0Ly8gT3ZlcnJpZGluZyBzZXJ2ZXIgc3R5bGVzIFRPRE86IGNsZWFudXAhXG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xufVxuXG48L3N0eWxlPlxuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbi5hcHAtY29udGVudFtkYXRhLXYtNzE3NThiMGZdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDEwMDA7XFxuICBmbGV4LWJhc2lzOiAxMDB2dztcXG4gIG1pbi13aWR0aDogMDtcXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XFxuICBtYXJnaW46IDAgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL0FwcENvbnRlbnQudnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQTZERjtFQUNDLGtCQUFrQjtFQUNsQixhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLFlBQVk7RUFDWixnQkFBZ0I7RUFFaEIsb0JBQW9CO0VBQ3BCLDhDQUE4QztBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG4uYXBwLWNvbnRlbnQge1xcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHR6LWluZGV4OiAxMDAwO1xcblxcdGZsZXgtYmFzaXM6IDEwMHZ3O1xcblxcdG1pbi13aWR0aDogMDtcXG5cXHRtaW4taGVpZ2h0OiAxMDAlO1xcblxcdC8vIE92ZXJyaWRpbmcgc2VydmVyIHN0eWxlcyBUT0RPOiBjbGVhbnVwIVxcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxufVxcblxcblwiLFwiLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuXFxuLy8gaHR0cHM6Ly91eHBsYW5ldC5vcmcvNy1ydWxlcy1mb3ItbW9iaWxlLXVpLWJ1dHRvbi1kZXNpZ24tZTljZjJlYTU0NTU2XFxuLy8gcmVjb21tZW5kZWQgaXMgNDhweFxcbi8vIDQ0cHggaXMgd2hhdCB3ZSBjaG9vc2UgYW5kIGhhdmUgdmVyeSBnb29kIHZpc3VhbC10by11c2FiaWxpdHkgcmF0aW9cXG4kY2xpY2thYmxlLWFyZWE6IDQ0cHg7XFxuXFxuLy8gYmFja2dyb3VuZCBpY29uIHNpemVcXG4vLyBhbHNvIHVzZWQgZm9yIHRoZSBzY3NzIGljb24gZm9udFxcbiRpY29uLXNpemU6IDE2cHg7XFxuXFxuLy8gaWNvbiBwYWRkaW5nIGZvciBhICRjbGlja2FibGUtYXJlYSB3aWR0aCBhbmQgYSAkaWNvbi1zaXplIGljb25cXG4vLyAoIDQ0cHggLSAxNnB4ICkgLyAyXFxuJGljb24tbWFyZ2luOiAoJGNsaWNrYWJsZS1hcmVhIC0gJGljb24tc2l6ZSkgLyAyO1xcblxcbi8vIHRyYW5zcGFyZW5jeSBiYWNrZ3JvdW5kIGZvciBpY29uc1xcbiRpY29uLWZvY3VzLWJnOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gcG9wb3Zlcm1lbnUgYXJyb3cgd2lkdGggZnJvbSB0aGUgdHJpYW5nbGUgY2VudGVyXFxuJGFycm93LXdpZHRoOiA5cHg7XFxuXFxuLy8gb3BhY2l0aWVzXFxuJG9wYWNpdHlfZGlzYWJsZWQ6IC41O1xcbiRvcGFjaXR5X25vcm1hbDogLjc7XFxuJG9wYWNpdHlfZnVsbDogMTtcXG5cXG4vLyBtZW51IHJvdW5kIGJhY2tncm91bmQgaG92ZXIgZmVlZGJhY2tcXG4vLyBnb29kIGxvb2tpbmcgb24gZGFyayBBTkQgd2hpdGUgYmdcXG4kYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyB2YXJpb3VzIHN0cnVjdHVyZSBkYXRhIHVzZWQgaW4gdGhlIFxcbi8vIGBBcHBOYXZpZ2F0aW9uYCBjb21wb25lbnRcXG4kaGVhZGVyLWhlaWdodDogNTBweDtcXG4kbmF2aWdhdGlvbi13aWR0aDogMzAwcHg7XFxuXFxuLy8gbW9iaWxlIGJyZWFrcG9pbnRcXG4kYnJlYWtwb2ludC1tb2JpbGU6IDEwMjRweDtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgcmV0dXJuIFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChjb250ZW50LCBcIn1cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMl0gPSBcIlwiLmNvbmNhdChtZWRpYVF1ZXJ5LCBcIiBhbmQgXCIpLmNvbmNhdChpdGVtWzJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgIShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pIHtcbiAgdmFyIF9pdGVtID0gX3NsaWNlZFRvQXJyYXkoaXRlbSwgNCksXG4gICAgICBjb250ZW50ID0gX2l0ZW1bMV0sXG4gICAgICBjc3NNYXBwaW5nID0gX2l0ZW1bM107XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcENvbnRlbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzE3NThiMGYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxudmFyIHN0eWxlc0luRG9tID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5Eb20ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5Eb21baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzSW5Eb20ucHVzaCh7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHZhciBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBhdHRyaWJ1dGVzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpLmNvbmNhdChvYmouY3NzLCBcIn1cIikgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcIm1haW5cIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcImFwcC1jb250ZW50IG5vLXNuYXBwZXJcIiwgYXR0cnM6IHsgaWQ6IFwiYXBwLWNvbnRlbnQtdnVlXCIgfSB9LFxuICAgIFtfdm0uX3QoXCJkZWZhdWx0XCIpXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKG9wdGlvbnMuZnVuY3Rpb25hbCA/IHRoaXMucGFyZW50IDogdGhpcykuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdFxuICAgICAgICApXG4gICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BcHBDb250ZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MTc1OGIwZiZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BcHBDb250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQXBwQ29udGVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQXBwQ29udGVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03MTc1OGIwZiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjcxNzU4YjBmXCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzcxNzU4YjBmJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzcxNzU4YjBmJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzcxNzU4YjBmJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BcHBDb250ZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MTc1OGIwZiZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCc3MTc1OGIwZicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvQXBwQ29udGVudC9BcHBDb250ZW50LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHBDb250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcENvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwQ29udGVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03MTc1OGIwZiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwQ29udGVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzE3NThiMGYmc2NvcGVkPXRydWUmXCIiLCIvKlxuICogQGNvcHlyaWdodCAyMDE5IENocmlzdG9waCBXdXJzdCA8Y2hyaXN0b3BoQHdpbnplcmhvZi13dXJzdC5hdD5cbiAqXG4gKiBAYXV0aG9yIDIwMTkgQ2hyaXN0b3BoIFd1cnN0IDxjaHJpc3RvcGhAd2luemVyaG9mLXd1cnN0LmF0PlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbmltcG9ydCBBcHBDb250ZW50IGZyb20gJy4vQXBwQ29udGVudCdcblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29udGVudFxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG5leHRjbG91ZC9ldmVudC1idXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaGFtbWVyanNcIik7Il0sInNvdXJjZVJvb3QiOiIifQ==","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/AppNavigation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/AppNavigation\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/AppNavigation\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/components/AppNavigation/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigation/AppNavigation.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/event-bus */ \"@nextcloud/event-bus\");\n/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _AppNavigationToggle_AppNavigationToggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AppNavigationToggle/AppNavigationToggle */ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue\");\n/* harmony import */ var _mixins_isMobile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mixins/isMobile */ \"./src/mixins/isMobile/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AppNavigation',\n components: {\n AppNavigationToggle: _AppNavigationToggle_AppNavigationToggle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n mixins: [_mixins_isMobile__WEBPACK_IMPORTED_MODULE_2__[\"default\"]],\n data: function data() {\n return {\n open: true\n };\n },\n watch: {\n isMobile: function isMobile() {\n this.open = !this.isMobile;\n }\n },\n mounted: function mounted() {\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__[\"subscribe\"])('toggle-navigation', this.toggleNavigationByEventBus); // Emit an event with the initial state of the navigation\n\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__[\"emit\"])('navigation-toggled', {\n open: this.open\n });\n },\n unmounted: function unmounted() {\n this.mc.off('swipeleft swiperight');\n this.mc.destroy();\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__[\"unsubscribe\"])('toggle-navigation', this.toggleNavigationByEventBus);\n },\n methods: {\n /**\n * Toggle the navigation\n *\n * @param {Boolean} [state] set the state instead of inverting the current one\n */\n toggleNavigation: function toggleNavigation(state) {\n var _this = this;\n\n this.open = typeof state === 'undefined' ? !this.open : state;\n var bodyStyles = getComputedStyle(document.body);\n var animationLength = parseInt(bodyStyles.getPropertyValue('--animation-quick')) || 100;\n setTimeout(function () {\n Object(_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__[\"emit\"])('navigation-toggled', {\n open: _this.open\n }); // We wait for 1.5 times the animation length to give the animation time to really finish.\n }, 1.5 * animationLength);\n },\n toggleNavigationByEventBus: function toggleNavigationByEventBus(_ref) {\n var open = _ref.open;\n this.toggleNavigation(open);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AppNavigationToggle',\n props: {\n open: {\n type: Boolean,\n required: true\n }\n },\n methods: {\n toggleNavigation: function toggleNavigation() {\n this.$emit('update:open', !this.open);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.app-navigation[data-v-d3908c0a] {\\n will-change: transform;\\n transition: transform var(--animation-quick), margin var(--animation-quick);\\n width: 300px;\\n position: sticky;\\n position: -webkit-sticky;\\n top: 50px;\\n left: 0;\\n z-index: 1800;\\n height: calc(100vh - 50px);\\n box-sizing: border-box;\\n background-color: var(--color-main-background);\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n border-right: 1px solid var(--color-border);\\n display: flex;\\n flex-direction: column;\\n flex-grow: 0;\\n flex-shrink: 0;\\n}\\n.app-navigation--close[data-v-d3908c0a] {\\n margin-left: -300px;\\n transform: translateX(-100%);\\n}\\n.app-navigation ul[data-v-d3908c0a], .app-navigation__list[data-v-d3908c0a] {\\n position: relative;\\n height: 100%;\\n width: inherit;\\n overflow-x: hidden;\\n overflow-y: auto;\\n box-sizing: border-box;\\n display: flex;\\n flex-direction: column;\\n}\\n@media only screen and (max-width: 1024px) {\\n.app-navigation[data-v-d3908c0a]:not(.app-navigation--close) {\\n margin-left: -300px;\\n}\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./AppNavigation.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AAwHF;EACC,sBAAsB;EACtB,2EAA2E;EAC3E,YC3FuB;ED4FvB,gBAAgB;EAChB,wBAAwB;EACxB,SC/FmB;EDgGnB,OAAO;EAEP,aAAa;EACb,0BAAuC;EACvC,sBAAsB;EACtB,8CAA8C;EAC9C,yBAAyB;EACzB,sBAAsB;EACtB,qBAAqB;EACrB,iBAAiB;EACjB,2CAA2C;EAC3C,aAAa;EACb,sBAAsB;EACtB,YAAY;EACZ,cAAc;AAAA;AAEd;IACC,mBChHsB;IDiHtB,4BAA4B;AAAA;AAzB9B;IA+BE,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,sBAAsB;AAAA;AAKxB;AACC;IACC,mBCrIsB;AAAA;ADsItB\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-navigation {\\n\\twill-change: transform;\\n\\ttransition: transform var(--animation-quick), margin var(--animation-quick);\\n\\twidth: $navigation-width;\\n\\tposition: sticky;\\n\\tposition: -webkit-sticky;\\n\\ttop: $header-height;\\n\\tleft: 0;\\n\\t// Above appcontent\\n\\tz-index: 1800;\\n\\theight: calc(100vh - #{$header-height});\\n\\tbox-sizing: border-box;\\n\\tbackground-color: var(--color-main-background);\\n\\t-webkit-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n\\tborder-right: 1px solid var(--color-border);\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\n\\t&--close {\\n\\t\\tmargin-left: - $navigation-width;\\n\\t\\ttransform: translateX(-100%);\\n\\t}\\n\\n\\t//list of navigation items\\n\\tul,\\n\\t&__list {\\n\\t\\tposition: relative;\\n\\t\\theight: 100%;\\n\\t\\twidth: inherit;\\n\\t\\toverflow-x: hidden;\\n\\t\\toverflow-y: auto;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\\n// When on mobile, we make the navigation slide over the appcontent\\n@media only screen and (max-width: $breakpoint-mobile) {\\n\\t.app-navigation:not(.app-navigation--close) {\\n\\t\\tmargin-left: - $navigation-width;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.eot */ \"./src/fonts/iconfont-vue-84c461f.eot\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.woff */ \"./src/fonts/iconfont-vue-84c461f.woff\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.ttf */ \"./src/fonts/iconfont-vue-84c461f.ttf\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.svg */ \"./src/fonts/iconfont-vue-84c461f.svg\");\n// Imports\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n@font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n /* IE9 Compat Modes */\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\");\\n /* Legacy iOS */\\n}\\n.icon[data-v-17ebeae3] {\\n font-style: normal;\\n font-weight: 400;\\n}\\n.icon.arrow-left-double[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-left[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right-double[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.breadcrumb[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.checkmark[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.close[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.confirm[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.info[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.menu[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.more[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.pause[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.play[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.triangle-s[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-away[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-dnd[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-invisible[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-online[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.app-navigation-toggle[data-v-17ebeae3] {\\n position: absolute;\\n top: 0;\\n right: 0;\\n margin-right: -44px;\\n width: 44px;\\n height: 44px;\\n padding: 14px;\\n cursor: pointer;\\n opacity: 0.6;\\n font-size: 16px;\\n line-height: 17px;\\n}\\n.app-navigation-toggle[data-v-17ebeae3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.app-navigation-toggle[data-v-17ebeae3]:hover, .app-navigation-toggle[data-v-17ebeae3]:focus {\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./AppNavigationToggle.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../fonts/scss/iconfont-vue.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AEsEA;EACC,mCAAmC;EACnC,4CAAuC;EAAE,qBAAA;EACzC,mPAGmD;EAAE,eAAA;AAAgB;AAMtE;EACE,kBAAkB;EAClB,gBAAgB;AAAA;AAFlB;IAMM,mCAAmC;IACnC,YA5Ge;AAAO;AAqG5B;IAMM,mCAAmC;IACnC,YA3GQ;AAAO;AAoGrB;IAMM,mCAAmC;IACnC,YA1GgB;AAAO;AAmG7B;IAMM,mCAAmC;IACnC,YAzGS;AAAO;AAkGtB;IAMM,mCAAmC;IACnC,YAxGQ;AAAO;AAiGrB;IAMM,mCAAmC;IACnC,YAvGO;AAAO;AAgGpB;IAMM,mCAAmC;IACnC,YAtGG;AAAO;AA+FhB;IAMM,mCAAmC;IACnC,YArGK;AAAO;AA8FlB;IAMM,mCAAmC;IACnC,YApGE;AAAO;AA6Ff;IAMM,mCAAmC;IACnC,YAnGE;AAAO;AA4Ff;IAMM,mCAAmC;IACnC,YAlGE;AAAO;AA2Ff;IAMM,mCAAmC;IACnC,YAjGG;AAAO;AA0FhB;IAMM,mCAAmC;IACnC,YAhGE;AAAO;AAyFf;IAMM,mCAAmC;IACnC,YA/FQ;AAAO;AAwFrB;IAMM,mCAAmC;IACnC,YA9Fc;AAAO;AAuF3B;IAMM,mCAAmC;IACnC,YA7Fa;AAAO;AAsF1B;IAMM,mCAAmC;IACnC,YA5FmB;AAAO;AAqFhC;IAMM,mCAAmC;IACnC,YA3FgB;AAAO;AFqC/B;EACC,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,mBCnCoB;EDoCpB,WCpCoB;EDqCpB,YCrCoB;EDsCpB,aC9B+C;EDgC/C,eAAe;EACf,YAAY;EAEZ,eCvCe;EDwCf,iBAAiB;AAAA;AAblB;IE0BI,mCAjFmB;IAkFnB,kBAAkB;IAClB,gBAAgB;IAChB,YA1EM;AAAO;AF6CjB;IAkBE,UC9Bc;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../fonts/scss/iconfont-vue';\\n\\n.app-navigation-toggle {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tmargin-right: - $clickable-area;\\n\\twidth: $clickable-area;\\n\\theight: $clickable-area;\\n\\tpadding: $icon-margin;\\n\\n\\tcursor: pointer;\\n\\topacity: 0.6;\\n\\n\\tfont-size: $icon-size;\\n\\tline-height: 17px;\\n\\t@include iconfont('menu');\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\topacity: $opacity_full;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (\\n\\t\\\"iconfont-vue-84c461f\\\": (\\n\\t\\t\\\"arrow-left-double\\\": \\\"\\\\ea01\\\",\\n\\t\\t\\\"arrow-left\\\": \\\"\\\\ea02\\\",\\n\\t\\t\\\"arrow-right-double\\\": \\\"\\\\ea03\\\",\\n\\t\\t\\\"arrow-right\\\": \\\"\\\\ea04\\\",\\n\\t\\t\\\"breadcrumb\\\": \\\"\\\\ea05\\\",\\n\\t\\t\\\"checkmark\\\": \\\"\\\\ea06\\\",\\n\\t\\t\\\"close\\\": \\\"\\\\ea07\\\",\\n\\t\\t\\\"confirm\\\": \\\"\\\\ea08\\\",\\n\\t\\t\\\"info\\\": \\\"\\\\ea09\\\",\\n\\t\\t\\\"menu\\\": \\\"\\\\ea0a\\\",\\n\\t\\t\\\"more\\\": \\\"\\\\ea0b\\\",\\n\\t\\t\\\"pause\\\": \\\"\\\\ea0c\\\",\\n\\t\\t\\\"play\\\": \\\"\\\\ea0d\\\",\\n\\t\\t\\\"triangle-s\\\": \\\"\\\\ea0e\\\",\\n\\t\\t\\\"user-status-away\\\": \\\"\\\\ea0f\\\",\\n\\t\\t\\\"user-status-dnd\\\": \\\"\\\\ea10\\\",\\n\\t\\t\\\"user-status-invisible\\\": \\\"\\\\ea11\\\",\\n\\t\\t\\\"user-status-online\\\": \\\"\\\\ea12\\\"\\n\\t)\\n));\\n\\n\\n$create-font-face: true !default; // should the @font-face tag get created?\\n\\n// should there be a custom class for each icon? will be .filename\\n$create-icon-classes: true !default; \\n\\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\\n// for each icon\\n$icon-common-class: 'icon' !default;\\n\\n// if you whish to prefix your filenames, here you can do so.\\n// if this string stays empty, your classes will use the filename, for example\\n// an icon called star.svg will result in a class called .star\\n// if you use the prefix to be 'icon-' it would result in .icon-star\\n$icon-prefix: '' !default; \\n\\n// helper function to get the correct font group\\n@function iconfont-group($group: null) {\\n @if (null == $group) {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n @if (false == map-has-key($__iconfont__data, $group)) {\\n @warn 'Undefined Iconfont Family!';\\n @return ();\\n }\\n @return map-get($__iconfont__data, $group);\\n}\\n\\n// helper function to get the correct icon of a group\\n@function iconfont-item($name) {\\n $slash: str-index($name, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($name, 0, $slash - 1);\\n $name: str-slice($name, $slash + 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n $group: iconfont-group($group);\\n @if (false == map-has-key($group, $name)) {\\n @warn 'Undefined Iconfont Glyph!';\\n @return '';\\n }\\n @return map-get($group, $name);\\n}\\n\\n// complete mixing to include the icon\\n// usage:\\n// .my_icon{ @include iconfont('star') }\\n@mixin iconfont($icon) {\\n $slash: str-index($icon, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($icon, 0, $slash - 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n &:before {\\n font-family: $group;\\n font-style: normal;\\n font-weight: 400;\\n content: iconfont-item($icon);\\n }\\n}\\n\\n// creates the font face tag if the variable is set to true (default)\\n@if $create-font-face == true {\\n @font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url('../iconfont-vue-84c461f.eot'); /* IE9 Compat Modes */\\n src: url('../iconfont-vue-84c461f.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\\n url('../iconfont-vue-84c461f.woff') format('woff'), /* Pretty Modern Browsers */\\n url('../iconfont-vue-84c461f.ttf') format('truetype'), /* Safari, Android, iOS */\\n url('../iconfont-vue-84c461f.svg') format('svg'); /* Legacy iOS */\\n }\\n}\\n\\n// creates icon classes for each individual loaded svg (default)\\n@if $create-icon-classes == true {\\n .#{$icon-common-class} {\\n font-style: normal;\\n font-weight: 400;\\n\\n @each $icon, $content in map-get($__iconfont__data, \\\"iconfont-vue-84c461f\\\") {\\n &.#{$icon-prefix}#{$icon}:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: iconfont-item(\\\"iconfont-vue-84c461f/#{$icon}\\\");\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/api.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/api.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/getUrl.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_style_index_0_id_d3908c0a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_style_index_0_id_d3908c0a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_style_index_0_id_d3908c0a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_style_index_0_id_17ebeae3_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_style_index_0_id_17ebeae3_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_style_index_0_id_17ebeae3_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true&\":\n/*!*********************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigation/AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true& ***!\n \\*********************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"app-navigation\",\n class: { \"app-navigation--close\": !_vm.open },\n attrs: { id: \"app-navigation-vue\", role: \"navigation\" }\n },\n [\n _c(\"AppNavigationToggle\", {\n attrs: { open: _vm.open },\n on: { \"update:open\": _vm.toggleNavigation }\n }),\n _vm._v(\" \"),\n _vm._t(\"default\"),\n _vm._v(\" \"),\n _c(\"ul\", { staticClass: \"app-navigation__list\" }, [_vm._t(\"list\")], 2),\n _vm._v(\" \"),\n _vm._t(\"footer\")\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true&\":\n/*!*********************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true& ***!\n \\*********************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"a\", {\n staticClass: \"app-navigation-toggle\",\n attrs: {\n href: \"#\",\n \"aria-expanded\": _vm.open ? \"true\" : \"false\",\n \"aria-controls\": \"app-navigation-vue\"\n },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.toggleNavigation($event)\n },\n keydown: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"space\", 32, $event.key, [\" \", \"Spacebar\"])\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.toggleNavigation($event)\n }\n }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigation/AppNavigation.vue\":\n/*!********************************************************!*\\\n !*** ./src/components/AppNavigation/AppNavigation.vue ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true& */ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true&\");\n/* harmony import */ var _AppNavigation_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppNavigation.vue?vue&type=script&lang=js& */ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _AppNavigation_vue_vue_type_style_index_0_id_d3908c0a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true& */ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AppNavigation.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _AppNavigation_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"d3908c0a\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _AppNavigation_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppNavigation/AppNavigation.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=custom&index=0&blockType=docs\":\n/*!***********************************************************************************************!*\\\n !*** ./src/components/AppNavigation/AppNavigation.vue?vue&type=custom&index=0&blockType=docs ***!\n \\***********************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************************!*\\\n !*** ./src/components/AppNavigation/AppNavigation.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigation.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************!*\\\n !*** ./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_style_index_0_id_d3908c0a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=style&index=0&id=d3908c0a&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigation/AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true&\":\n/*!***************************************************************************************************!*\\\n !*** ./src/components/AppNavigation/AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true& ***!\n \\***************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigation/AppNavigation.vue?vue&type=template&id=d3908c0a&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigation_vue_vue_type_template_id_d3908c0a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigation/index.js\":\n/*!***********************************************!*\\\n !*** ./src/components/AppNavigation/index.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigation */ \"./src/components/AppNavigation/AppNavigation.vue\");\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_AppNavigation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue\":\n/*!********************************************************************!*\\\n !*** ./src/components/AppNavigationToggle/AppNavigationToggle.vue ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true& */ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true&\");\n/* harmony import */ var _AppNavigationToggle_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppNavigationToggle.vue?vue&type=script&lang=js& */ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _AppNavigationToggle_vue_vue_type_style_index_0_id_17ebeae3_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss& */ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _AppNavigationToggle_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"17ebeae3\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppNavigationToggle/AppNavigationToggle.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************************************!*\\\n !*** ./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationToggle.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss&\":\n/*!******************************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss& ***!\n \\******************************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_style_index_0_id_17ebeae3_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=style&index=0&id=17ebeae3&scoped=true&lang=scss&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true&\":\n/*!***************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true& ***!\n \\***************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationToggle/AppNavigationToggle.vue?vue&type=template&id=17ebeae3&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationToggle_vue_vue_type_template_id_17ebeae3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.eot\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.eot ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:application/vnd.ms-fontobject;base64,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\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.svg\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.svg ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlLTg0YzQ2MWYiIGhvcml6LWFkdi14PSI1MDAwIj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJpY29uZm9udC12dWUtODRjNDYxZiIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zdHJldGNoPSJub3JtYWwiIHVuaXRzLXBlci1lbT0iNTAwMCIgcGFub3NlLTE9IjIgMCA1IDMgMCAwIDAgMCAwIDAiIGFzY2VudD0iNTAwMCIgZGVzY2VudD0iMCIgeC1oZWlnaHQ9IjAiIGJib3g9Ii0zMiAwIDUwMTEgNTAwMCIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iMCIgdW5kZXJsaW5lLXBvc2l0aW9uPSI1MCIgdW5pY29kZS1yYW5nZT0iVStlYTAxLWVhMTIiIC8+PG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjAiICAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0LWRvdWJsZSIgdW5pY29kZT0iJiN4ZWEwMTsiIGQ9Ik0zNzUwIDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaTTIzNDQgMzkwNiBsLTE0MDYgLTE0MDYgbDE0MDYgLTE0MDYgbDAgMzEyIGwtMTA5NCAxMDk0IGwxMDk0IDEwOTQgbDAgMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQiIHVuaWNvZGU9IiYjeGVhMDI7IiBkPSJNMTU2MyAyNTAwIGwxODc1IC0xODc1IGwwIC0zMTIgbC0yMTg4IDIxODcgbDIxODggMjE4OCBsMCAtMzEzIGwtMTg3NSAtMTg3NSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1yaWdodC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDM7IiBkPSJNMTI1MCAxMDk0IGwxNDA2IDE0MDYgbC0xNDA2IDE0MDYgbDAgLTMxMiBsMTA5NCAtMTA5NCBsLTEwOTQgLTEwOTQgbDAgLTMxMiBaTTI2NTYgMTA5NCBsMTQwNyAxNDA2IGwtMTQwNyAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQiIHVuaWNvZGU9IiYjeGVhMDQ7IiBkPSJNMzQzOCAyNTAwIGwtMTg3NSAxODc1IGwwIDMxMyBsMjE4NyAtMjE4OCBsLTIxODcgLTIxODcgbDAgMzEyIGwxODc1IDE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYnJlYWRjcnVtYiIgdW5pY29kZT0iJiN4ZWEwNTsiIGQ9Ik0xNDggNTAwMCBsLTE0OCAtODUgbDEzOTQgLTI0MTUgbC0xMzk0IC0yNDE1IGwxNDggLTg1IGwxNDQzIDI1MDAgbC0xNDQzIDI1MDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2ttYXJrIiB1bmljb2RlPSImI3hlYTA2OyIgZD0iTTQwNDUgMzk3MSBsLTIwNjEgLTIwNjEgbC0xMDI5IDEwMjkgbC00NDIgLTQ0MSBsMTQ3MSAtMTQ3MSBsMjUwMyAyNTAyIGwtNDQyIDQ0MiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJjbG9zZSIgdW5pY29kZT0iJiN4ZWEwNzsiIGQ9Ik00Mzc1IDExNTYgbC01MzEgLTUzMSBsLTEzNDQgMTM0NCBsLTEzNDQgLTEzNDQgbC01MzEgNTMxIGwxMzQ0IDEzNDQgbC0xMzQ0IDEzNDQgbDUzMSA1MzEgbDEzNDQgLTEzNDQgbDEzNDQgMTM0NCBsNTMxIC01MzEgbC0xMzQ0IC0xMzQ0IGwxMzQ0IC0xMzQ0IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNvbmZpcm0iIHVuaWNvZGU9IiYjeGVhMDg7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJpbmZvIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTI0MjIgNDY4OCBxLTExMSAwIC0yMTMgLTQzIHEtOTggLTQyIC0xNzQgLTExNy41IHEtNzYgLTc1LjUgLTExNyAtMTc0LjUgcS00MyAtMTAxIC00MyAtMjEyLjUgcTAgLTExMS41IDQzIC0yMTIuNSBxNDEgLTk4IDExNyAtMTc0IHE3NiAtNzYgMTc0IC0xMTcgcTEwMiAtNDMgMjEzIC00MyBxMTExIDAgMjEzIDQzIHE5OCA0MSAxNzMuNSAxMTcgcTc1LjUgNzYgMTE3LjUgMTc0IHE0MyAxMDEgNDMgMjEyLjUgcTAgMTExLjUgLTQzIDIxMi41IHEtNDIgOTkgLTExNy41IDE3NC41IHEtNzUuNSA3NS41IC0xNzMuNSAxMTcuNSBxLTEwMiA0MyAtMjEzIDQzIFpNMTU2MyAzMTI1IHEtODYgMCAtMTU4IC00MyBxLTcxIC00MSAtMTEyIC0xMTIgcS00MyAtNzIgLTQzIC0xNTcuNSBxMCAtODUuNSA0MyAtMTU3LjUgcTQxIC03MSAxMTIgLTExMiBxNzIgLTQzIDE1OCAtNDMgbDYyNSAwIGwwIC0xNTYyIGwtNjI1IDAgcS04NiAwIC0xNTggLTQzIHEtNzEgLTQxIC0xMTIgLTExMiBxLTQzIC03MyAtNDMgLTE1OCBxMCAtODUgNDMgLTE1OCBxNDEgLTcxIDExMiAtMTEyIHE3MiAtNDMgMTU4IC00MiBsMTg3NSAwIHE4NSAwIDE1NyA0MiBxNzEgNDEgMTEyIDExMiBxNDMgNzMgNDMgMTU4IHEwIDg1IC00MyAxNTggcS00MSA3MSAtMTEyIDExMiBxLTcyIDQzIC0xNTcgNDMgbC02MjUgMCBsMCAxODc1IHEwIDg1IC00MyAxNTcgcS00MSA3MSAtMTEyIDExMiBxLTczIDQzIC0xNTggNDMgbC05MzcgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTBiOyIgZD0iTTc4MSAzMDQ3IHExMTIgMCAyMTMgLTQzIHE5OCAtNDIgMTc0IC0xMTcuNSBxNzYgLTc1LjUgMTE3IC0xNzMuNSBxNDMgLTEwMiA0MyAtMjEzIHEwIC0xMTEgLTQzIC0yMTMgcS00MSAtOTggLTExNyAtMTczLjUgcS03NiAtNzUuNSAtMTc0IC0xMTcuNSBxLTEwMSAtNDMgLTIxMi41IC00MyBxLTExMS41IDAgLTIxMy41IDQzIHEtOTggNDIgLTE3My41IDExNy41IHEtNzUuNSA3NS41IC0xMTcuNSAxNzMuNSBxLTQzIDEwMiAtNDMgMjEzIHEwIDExMSA0MyAyMTMgcTQyIDk4IDExNy41IDE3My41IHE3NS41IDc1LjUgMTczLjUgMTE3LjUgcTEwMiA0MyAyMTMgNDMgWk0yNTAwIDMwNDcgcTExMSAwIDIxMyAtNDMgcTk4IC00MiAxNzMuNSAtMTE3LjUgcTc1LjUgLTc1LjUgMTE3LjUgLTE3My41IHE0MyAtMTAyIDQzIC0yMTMgcTAgLTExMSAtNDMgLTIxMyBxLTQyIC05OCAtMTE3LjUgLTE3My41IHEtNzUuNSAtNzUuNSAtMTczLjUgLTExNy41IHEtMTAyIC00MyAtMjEzIC00MyBxLTExMSAwIC0yMTMgNDMgcS05OCA0MiAtMTczLjUgMTE3LjUgcS03NS41IDc1LjUgLTExNy41IDE3My41IHEtNDMgMTAyIC00MyAyMTMgcTAgMTExIDQzIDIxMyBxNDIgOTggMTE3LjUgMTczLjUgcTc1LjUgNzUuNSAxNzMuNSAxMTcuNSBxMTAyIDQzIDIxMyA0MyBaTTQyMTkgMzA0NyBxMTExIDAgMjEzIC00MyBxOTggLTQyIDE3My41IC0xMTcuNSBxNzUuNSAtNzUuNSAxMTcuNSAtMTczLjUgcTQzIC0xMDIgNDMgLTIxMyBxMCAtMTExIC00MyAtMjEzIHEtNDIgLTk4IC0xMTcuNSAtMTczLjUgcS03NS41IC03NS41IC0xNzMuNSAtMTE3LjUgcS0xMDIgLTQzIC0yMTMuNSAtNDMgcS0xMTEuNSAwIC0yMTIuNSA0MyBxLTk4IDQyIC0xNzQgMTE3LjUgcS03NiA3NS41IC0xMTcgMTczLjUgcS00MyAxMDIgLTQzIDIxMyBxMCAxMTEgNDMgMjEzIHE0MSA5OCAxMTcgMTczLjUgcTc2IDc1LjUgMTc0IDExNy41IHExMDEgNDMgMjEzIDQzIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBjOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwZDsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJ0cmlhbmdsZS1zIiB1bmljb2RlPSImI3hlYTBlOyIgZD0iTTEyNTAgMzEyNSBsMTI1MCAtMTI1MCBsMTI1MCAxMjQ4IGwtMjUwMCAyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWF3YXkiIHVuaWNvZGU9IiYjeGVhMGY7IiBkPSJNMjE1NiA0OTY5IHEtMzYwIC00NiAtNjk1IC0xOTcgcS0zMjYgLTE0NyAtNjAxIC0zODAgcS0yNzQgLTIzMSAtNDcyIC01MjggcS0yMDIgLTMwMSAtMzA5IC02NDIgcS0xMTAgLTM1MyAtMTEwIC03MjIgcTAgLTQwNiAxMjggLTc4OCBxMTIzIC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTM2OSAwIDcyMiAxMDcgcTM0MiAxMDQgNjQ0IDMwMSBxMjk4IDE5NCA1MzMgNDYzIHEyMzYgMjcwIDM4OSA1OTMgcTE1NiAzMzEgMjEyIDY5MiBxLTE4OCAtMjA0IC00MjMuNSAtMzUxIHEtMjM1LjUgLTE0NyAtNDk4LjUgLTIyNSBxLTI2OSAtODAgLTU0NyAtODAgcS0zMjIgMCAtNjI4IDEwMyBxLTI5NSA5OSAtNTQ4IDI4NiBxLTI1MSAxODQgLTQzNSA0MzUgcS0xODcgMjUzIC0yODYgNTQ4IHEtMTAzIDMwNiAtMTAzIDYyOCBxMCAyOTMgODAgNTY4IHE3OCAyNjkgMjI1LjUgNDk4LjUgcTE0Ny41IDIyOS41IDM1MC41IDQwMi41IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWRuZCIgdW5pY29kZT0iJiN4ZWExMDsiIGQ9Ik0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFpNMTU2MyAyOTY5IGwxODc1IDAgcTkxIDAgMTc4IC0zOCBxODQgLTM3IDE1MCAtMTAzIHE2NiAtNjYgMTAyIC0xNDkgcTM4IC04NyAzOCAtMTc5IHEwIC05MiAtMzggLTE3OSBxLTM2IC04MyAtMTAyIC0xNDkgcS02NiAtNjYgLTE1MCAtMTAzIHEtODcgLTM4IC0xNzggLTM4IGwtMTg3NSAwIHEtOTIgMCAtMTc5IDM4IHEtODQgMzcgLTE1MCAxMDMgcS02NiA2NiAtMTAyIDE0OSBxLTM4IDg3IC0zOCAxNzkgcTAgOTIgMzggMTc5IHEzNiA4MyAxMDIgMTQ5IHE2NiA2NiAxNTAgMTAzIHE4NyAzOCAxNzkgMzggWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtaW52aXNpYmxlIiB1bmljb2RlPSImI3hlYTExOyIgZD0iTTI1MDAgNTAwMCBxLTQwNiAwIC03ODggLTEyOCBxLTM3MCAtMTI0IC02ODYgLTM1NiBxLTMxMyAtMjI5IC01NDIgLTU0MiBxLTIzMiAtMzE2IC0zNTYgLTY4NiBxLTEyOCAtMzgyIC0xMjggLTc4OCBxMCAtNDA2IDEyOCAtNzg4IHExMjQgLTM3MCAzNTYgLTY4NiBxMjI5IC0zMTMgNTQyIC01NDIgcTMxNiAtMjMyIDY4NiAtMzU2IHEzODIgLTEyOCA3ODggLTEyOCBxNDA2IDAgNzg4IDEyOCBxMzcwIDEyNCA2ODYgMzU2IHEzMTMgMjI5IDU0MiA1NDIgcTIzMiAzMTYgMzU2IDY4NiBxMTI4IDM4MiAxMjggNzg4IHEwIDQwNiAtMTI4IDc4OCBxLTEyNCAzNzAgLTM1NiA2ODYgcS0yMjkgMzEzIC01NDIgNTQyIHEtMzE2IDIzMiAtNjg2IDM1NiBxLTM4MiAxMjggLTc4OCAxMjggWk0yNTAwIDQwMDAgcTMxMSAwIDU5MCAtMTE2IHEyNzEgLTExMiA0NzYuNSAtMzE3LjUgcTIwNS41IC0yMDUuNSAzMTcuNSAtNDc2LjUgcTExNiAtMjc5IDExNiAtNTkwIHEwIC0zMTEgLTExNiAtNTkwIHEtMTEyIC0yNzEgLTMxNy41IC00NzYuNSBxLTIwNS41IC0yMDUuNSAtNDc2LjUgLTMxNy41IHEtMjc5IC0xMTYgLTU5MCAtMTE2IHEtMzExIDAgLTU5MCAxMTYgcS0yNzEgMTEyIC00NzYuNSAzMTcuNSBxLTIwNS41IDIwNS41IC0zMTcuNSA0NzYuNSBxLTExNiAyNzkgLTExNiA1OTAgcTAgMzExIDExNiA1OTAgcTExMiAyNzEgMzE3LjUgNDc2LjUgcTIwNS41IDIwNS41IDQ3Ni41IDMxNy41IHEyNzkgMTE2IDU5MCAxMTYgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtb25saW5lIiB1bmljb2RlPSImI3hlYTEyOyIgZD0iTTE1MDAgMTUwMCBsMjAwMCAwIGwwIDIwMDAgbC0yMDAwIDAgbDAgLTIwMDAgWk0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFoiIC8+PC9mb250PjwvZGVmcz48L3N2Zz4=\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.ttf\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.ttf ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/ttf;base64,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AAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtODRjNDYxZlJlZ3VsYXJpY29uZm9udC12dWUtODRjNDYxZmljb25mb250LXZ1ZS04NGM0NjFmVmVyc2lvbiAxLjBpY29uZm9udC12dWUtODRjNDYxZkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADgANABjADQANgAxAGYAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.woff\":\n/*!*********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.woff ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff;base64,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PAE55eh8gAAAAQAAAAEAAD/s/DtfDzz1AAsTiAAAAADc1Uf1AAAAANyEa/X/4AAAE5MTiAAAAAgAAgAAAAAAAAABAAATiAAAAAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtODRjNDYxZlJlZ3VsYXJpY29uZm9udC12dWUtODRjNDYxZmljb25mb250LXZ1ZS04NGM0NjFmVmVyc2lvbiAxLjBpY29uZm9udC12dWUtODRjNDYxZkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADgANABjADQANgAxAGYAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\");\n\n/***/ }),\n\n/***/ \"./src/mixins/isMobile/index.js\":\n/*!**************************************!*\\\n !*** ./src/mixins/isMobile/index.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/IsMobileState */ \"./src/utils/IsMobileState.js\");\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n isMobile: false\n };\n },\n mounted: function mounted() {\n _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].$on('changed', this.onIsMobileChanged);\n this.isMobile = _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].isMobile;\n },\n beforeDestroy: function beforeDestroy() {\n _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].$off('changed', this.onIsMobileChanged);\n },\n methods: {\n onIsMobileChanged: function onIsMobileChanged(val) {\n this.isMobile = val;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/utils/IsMobileState.js\":\n/*!************************************!*\\\n !*** ./src/utils/IsMobileState.js ***!\n \\************************************/\n/*! exports provided: IsMobileState */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IsMobileState\", function() { return IsMobileState; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer\n *\n * @author Kristof Hamann\n * @author Paul Schwörer\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nvar IsMobileState = new vue__WEBPACK_IMPORTED_MODULE_0___default.a({\n data: function data() {\n return {\n isMobile: false\n };\n },\n watch: {\n isMobile: function isMobile(val) {\n this.$emit('changed', val);\n }\n },\n created: function created() {\n window.addEventListener('resize', this.handleWindowResize);\n this.handleWindowResize();\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleWindowResize);\n },\n methods: {\n handleWindowResize: function handleWindowResize() {\n this.isMobile = document.documentElement.clientWidth < 1024;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"@nextcloud/event-bus\":\n/*!***************************************!*\\\n !*** external \"@nextcloud/event-bus\" ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/event-bus\");\n\n/***/ }),\n\n/***/ \"vue\":\n/*!**********************!*\\\n !*** external \"vue\" ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbi9BcHBOYXZpZ2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Ub2dnbGUvQXBwTmF2aWdhdGlvblRvZ2dsZS52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb24vQXBwTmF2aWdhdGlvbi52dWU/MWVhMiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvblRvZ2dsZS9BcHBOYXZpZ2F0aW9uVG9nZ2xlLnZ1ZT8xNzZhIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbi9BcHBOYXZpZ2F0aW9uLnZ1ZT9lZTNmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uVG9nZ2xlL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlP2IxMDQiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbi9BcHBOYXZpZ2F0aW9uLnZ1ZT9kNzhiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uVG9nZ2xlL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlPzNkZDAiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb24vQXBwTmF2aWdhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb24vQXBwTmF2aWdhdGlvbi52dWU/MzAyMCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbi9BcHBOYXZpZ2F0aW9uLnZ1ZT84ZmU4Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uL0FwcE5hdmlnYXRpb24udnVlP2ZmYzIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Ub2dnbGUvQXBwTmF2aWdhdGlvblRvZ2dsZS52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Ub2dnbGUvQXBwTmF2aWdhdGlvblRvZ2dsZS52dWU/MGIyOSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvblRvZ2dsZS9BcHBOYXZpZ2F0aW9uVG9nZ2xlLnZ1ZT9iMjM3Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uVG9nZ2xlL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlPzhmYWQiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5lb3QiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5zdmciLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi50dGYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi53b2ZmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvbWl4aW5zL2lzTW9iaWxlL2luZGV4LmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvdXRpbHMvSXNNb2JpbGVTdGF0ZS5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiQG5leHRjbG91ZC9ldmVudC1idXNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwidnVlXCIiXSwibmFtZXMiOlsiQXBwTmF2aWdhdGlvbiIsImRhdGEiLCJpc01vYmlsZSIsIm1vdW50ZWQiLCJJc01vYmlsZVN0YXRlIiwiJG9uIiwib25Jc01vYmlsZUNoYW5nZWQiLCJiZWZvcmVEZXN0cm95IiwiJG9mZiIsIm1ldGhvZHMiLCJ2YWwiLCJWdWUiLCJ3YXRjaCIsIiRlbWl0IiwiY3JlYXRlZCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVXaW5kb3dSZXNpemUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDtBQUNuRCxDQUFDO0FBQ0QsTztRQ1ZBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLHVCQURBO0FBR0E7QUFDQTtB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFTyxJQUFNTixhQUFhLEdBQUcsSUFBSU8sMENBQUosQ0FBUTtBQUNwQ1YsTUFEb0Msa0JBQzdCO0FBQ04sV0FBTztBQUNOQyxjQUFRLEVBQUU7QUFESixLQUFQO0FBR0EsR0FMbUM7QUFNcENVLE9BQUssRUFBRTtBQUNOVixZQURNLG9CQUNHUSxHQURILEVBQ1E7QUFDYixXQUFLRyxLQUFMLENBQVcsU0FBWCxFQUFzQkgsR0FBdEI7QUFDQTtBQUhLLEdBTjZCO0FBV3BDSSxTQVhvQyxxQkFXMUI7QUFDVEMsVUFBTSxDQUFDQyxnQkFBUCxDQUF3QixRQUF4QixFQUFrQyxLQUFLQyxrQkFBdkM7QUFDQSxTQUFLQSxrQkFBTDtBQUNBLEdBZG1DO0FBZXBDVixlQWZvQywyQkFlcEI7QUFDZlEsVUFBTSxDQUFDRyxtQkFBUCxDQUEyQixRQUEzQixFQUFxQyxLQUFLRCxrQkFBMUM7QUFDQSxHQWpCbUM7QUFrQnBDUixTQUFPLEVBQUU7QUFDUlEsc0JBRFEsZ0NBQ2E7QUFDcEIsV0FBS2YsUUFBTCxHQUFnQmlCLFFBQVEsQ0FBQ0MsZUFBVCxDQUF5QkMsV0FBekIsR0FBdUMsSUFBdkQ7QUFDQTtBQUhPO0FBbEIyQixDQUFSLENBQXRCLEM7Ozs7Ozs7Ozs7O0FDekJQLGlEOzs7Ozs7Ozs7OztBQ0FBLGdDIiwiZmlsZSI6IkNvbXBvbmVudHMvQXBwTmF2aWdhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwiQ29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uXCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIkNvbXBvbmVudHMvQXBwTmF2aWdhdGlvblwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJOZXh0Y2xvdWRWdWVcIl0gPSByb290W1wiTmV4dGNsb3VkVnVlXCJdIHx8IHt9LCByb290W1wiTmV4dGNsb3VkVnVlXCJdW1wiQ29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uXCJdID0gZmFjdG9yeSgpO1xufSkod2luZG93LCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb24vaW5kZXguanNcIik7XG4iLCI8IS0tXG4gLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBDaHJpc3RvcGggV3Vyc3QgPGNocmlzdG9waEB3aW56ZXJob2Ytd3Vyc3QuYXQ+XG4gLVxuIC0gQGF1dGhvciBDaHJpc3RvcGggV3Vyc3QgPGNocmlzdG9waEB3aW56ZXJob2Ytd3Vyc3QuYXQ+XG4gLSBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAtIEBhdXRob3IgTWFyY28gQW1icm9zaW5pIDxtYXJjb2FtYnJvc2luaUBwbS5tZT5cbiAtXG4gLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAtXG4gLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAtXG4gLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAtXG4gLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gLVxuIC0tPlxuPGRvY3M+XG5UaGUgbmF2aWdhdGlvbiBiYXIgY2FuIGJlIG9wZW4gYW5kIGNsb3NlZCBmcm9tIGFueXdoZXJlIGluIHRoZSBhcHAgdXNpbmcgdGhlXG5uZXh0Y2xvdWQgZXZlbnQgYnVzLlxuXG4jIyMgSW5zdGFsbCB0aGUgZXZlbnQgYnVzIHBhY2thZ2VcblxuYGBgYmFzaFxubnBtIGkgLVMgQG5leHRjbG91ZC9ldmVudC1idXNcbmBgYFxuXG4jIyMgVXNhZ2VcblxuIyMjIyBPcGVuIHRoZSBuYXZpZ2F0aW9uXG5cbmBgYGpzIHN0YXRpY1xuaW1wb3J0IHsgZW1pdCB9IGZyb20gJ0BuZXh0Y2xvdWQvZXZlbnQtYnVzJ1xuZW1pdCgndG9nZ2xlLW5hdmlnYXRpb24nLCB7XG5cdG9wZW46IHRydWUsXG59KVxuYGBgXG5cbiMjIyMgQ2xvc2UgdGhlIG5hdmlnYXRpb25cblxuYGBganMgc3RhdGljXG5pbXBvcnQgeyBlbWl0IH0gZnJvbSAnQG5leHRjbG91ZC9ldmVudC1idXMnXG5lbWl0KCd0b2dnbGUtbmF2aWdhdGlvbicsIHtcblx0b3BlbjogZmFsc2UsXG59KVxuYGBgXG5cbjwvZG9jcz5cblxuPHRlbXBsYXRlPlxuXHQ8ZGl2XG5cdFx0aWQ9XCJhcHAtbmF2aWdhdGlvbi12dWVcIlxuXHRcdGNsYXNzPVwiYXBwLW5hdmlnYXRpb25cIlxuXHRcdHJvbGU9XCJuYXZpZ2F0aW9uXCJcblx0XHQ6Y2xhc3M9XCJ7J2FwcC1uYXZpZ2F0aW9uLS1jbG9zZSc6IW9wZW4gfVwiPlxuXHRcdDxBcHBOYXZpZ2F0aW9uVG9nZ2xlIDpvcGVuPVwib3BlblwiIEB1cGRhdGU6b3Blbj1cInRvZ2dsZU5hdmlnYXRpb25cIiAvPlxuXHRcdDxzbG90IC8+XG5cblx0XHQ8IS0tIExpc3QgZm9yIE5hdmlnYXRpb24gbGktaXRlbXMgLS0+XG5cdFx0PHVsIGNsYXNzPVwiYXBwLW5hdmlnYXRpb25fX2xpc3RcIj5cblx0XHRcdDxzbG90IG5hbWU9XCJsaXN0XCIgLz5cblx0XHQ8L3VsPlxuXG5cdFx0PCEtLSBGb290ZXIgZm9yIGUuZy4gQXBwTmF2aWdhdGlvblNldHRpbmdzIC0tPlxuXHRcdDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuXHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBlbWl0LCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlIH0gZnJvbSAnQG5leHRjbG91ZC9ldmVudC1idXMnXG5pbXBvcnQgQXBwTmF2aWdhdGlvblRvZ2dsZSBmcm9tICcuLi9BcHBOYXZpZ2F0aW9uVG9nZ2xlL0FwcE5hdmlnYXRpb25Ub2dnbGUnXG5pbXBvcnQgaXNNb2JpbGUgZnJvbSAnLi4vLi4vbWl4aW5zL2lzTW9iaWxlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICdBcHBOYXZpZ2F0aW9uJyxcblxuXHRjb21wb25lbnRzOiB7XG5cdFx0QXBwTmF2aWdhdGlvblRvZ2dsZSxcblx0fSxcblxuXHRtaXhpbnM6IFtpc01vYmlsZV0sXG5cblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0b3BlbjogdHJ1ZSxcblx0XHR9XG5cdH0sXG5cblx0d2F0Y2g6IHtcblx0XHRpc01vYmlsZSgpIHtcblx0XHRcdHRoaXMub3BlbiA9ICF0aGlzLmlzTW9iaWxlXG5cdFx0fSxcblx0fSxcblxuXHRtb3VudGVkKCkge1xuXHRcdHN1YnNjcmliZSgndG9nZ2xlLW5hdmlnYXRpb24nLCB0aGlzLnRvZ2dsZU5hdmlnYXRpb25CeUV2ZW50QnVzKVxuXHRcdC8vIEVtaXQgYW4gZXZlbnQgd2l0aCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgbmF2aWdhdGlvblxuXHRcdGVtaXQoJ25hdmlnYXRpb24tdG9nZ2xlZCcsIHtcblx0XHRcdG9wZW46IHRoaXMub3Blbixcblx0XHR9KVxuXHR9LFxuXHR1bm1vdW50ZWQoKSB7XG5cdFx0dGhpcy5tYy5vZmYoJ3N3aXBlbGVmdCBzd2lwZXJpZ2h0Jylcblx0XHR0aGlzLm1jLmRlc3Ryb3koKVxuXHRcdHVuc3Vic2NyaWJlKCd0b2dnbGUtbmF2aWdhdGlvbicsIHRoaXMudG9nZ2xlTmF2aWdhdGlvbkJ5RXZlbnRCdXMpXG5cdH0sXG5cblx0bWV0aG9kczoge1xuXHRcdC8qKlxuXHRcdCAqIFRvZ2dsZSB0aGUgbmF2aWdhdGlvblxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtCb29sZWFufSBbc3RhdGVdIHNldCB0aGUgc3RhdGUgaW5zdGVhZCBvZiBpbnZlcnRpbmcgdGhlIGN1cnJlbnQgb25lXG5cdFx0ICovXG5cdFx0dG9nZ2xlTmF2aWdhdGlvbihzdGF0ZSkge1xuXHRcdFx0dGhpcy5vcGVuID0gKHR5cGVvZiBzdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpID8gIXRoaXMub3BlbiA6IHN0YXRlXG5cdFx0XHRjb25zdCBib2R5U3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KVxuXHRcdFx0Y29uc3QgYW5pbWF0aW9uTGVuZ3RoID0gcGFyc2VJbnQoYm9keVN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCctLWFuaW1hdGlvbi1xdWljaycpKSB8fCAxMDBcblxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGVtaXQoJ25hdmlnYXRpb24tdG9nZ2xlZCcsIHtcblx0XHRcdFx0XHRvcGVuOiB0aGlzLm9wZW4sXG5cdFx0XHRcdH0pXG5cdFx0XHQvLyBXZSB3YWl0IGZvciAxLjUgdGltZXMgdGhlIGFuaW1hdGlvbiBsZW5ndGggdG8gZ2l2ZSB0aGUgYW5pbWF0aW9uIHRpbWUgdG8gcmVhbGx5IGZpbmlzaC5cblx0XHRcdH0sIDEuNSAqIGFuaW1hdGlvbkxlbmd0aClcblx0XHR9LFxuXHRcdHRvZ2dsZU5hdmlnYXRpb25CeUV2ZW50QnVzKHsgb3BlbiB9KSB7XG5cdFx0XHR0aGlzLnRvZ2dsZU5hdmlnYXRpb24ob3Blbilcblx0XHR9LFxuXHR9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cblxuLmFwcC1uYXZpZ2F0aW9uIHtcblx0d2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWFuaW1hdGlvbi1xdWljayksIG1hcmdpbiB2YXIoLS1hbmltYXRpb24tcXVpY2spO1xuXHR3aWR0aDogJG5hdmlnYXRpb24td2lkdGg7XG5cdHBvc2l0aW9uOiBzdGlja3k7XG5cdHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTtcblx0dG9wOiAkaGVhZGVyLWhlaWdodDtcblx0bGVmdDogMDtcblx0Ly8gQWJvdmUgYXBwY29udGVudFxuXHR6LWluZGV4OiAxODAwO1xuXHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAjeyRoZWFkZXItaGVpZ2h0fSk7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XG5cdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC1tcy11c2VyLXNlbGVjdDogbm9uZTtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGZsZXgtZ3JvdzogMDtcblx0ZmxleC1zaHJpbms6IDA7XG5cblx0Ji0tY2xvc2Uge1xuXHRcdG1hcmdpbi1sZWZ0OiAtICRuYXZpZ2F0aW9uLXdpZHRoO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG5cdH1cblxuXHQvL2xpc3Qgb2YgbmF2aWdhdGlvbiBpdGVtc1xuXHR1bCxcblx0Jl9fbGlzdCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHR3aWR0aDogaW5oZXJpdDtcblx0XHRvdmVyZmxvdy14OiBoaWRkZW47XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0fVxufVxuXG4vLyBXaGVuIG9uIG1vYmlsZSwgd2UgbWFrZSB0aGUgbmF2aWdhdGlvbiBzbGlkZSBvdmVyIHRoZSBhcHBjb250ZW50XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1vYmlsZSkge1xuXHQuYXBwLW5hdmlnYXRpb246bm90KC5hcHAtbmF2aWdhdGlvbi0tY2xvc2UpIHtcblx0XHRtYXJnaW4tbGVmdDogLSAkbmF2aWdhdGlvbi13aWR0aDtcblx0fVxufVxuXG48L3N0eWxlPlxuIiwiPCEtLVxuIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgQ2hyaXN0b3BoIFd1cnN0IDxjaHJpc3RvcGhAd2luemVyaG9mLXd1cnN0LmF0PlxuIC1cbiAtIEBhdXRob3IgQ2hyaXN0b3BoIFd1cnN0IDxjaHJpc3RvcGhAd2luemVyaG9mLXd1cnN0LmF0PlxuIC0gQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gLSBAYXV0aG9yIE1hcmNvIEFtYnJvc2luaSA8bWFyY29hbWJyb3NpbmlAcG0ubWU+XG4gLVxuIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gLVxuIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuIC1cbiAtLT5cbjx0ZW1wbGF0ZT5cblx0PGEgY2xhc3M9XCJhcHAtbmF2aWdhdGlvbi10b2dnbGVcIlxuXHRcdGhyZWY9XCIjXCJcblx0XHQ6YXJpYS1leHBhbmRlZD1cIm9wZW4gPyAndHJ1ZScgOiAnZmFsc2UnXCJcblx0XHRhcmlhLWNvbnRyb2xzPVwiYXBwLW5hdmlnYXRpb24tdnVlXCJcblx0XHRAY2xpY2sucHJldmVudD1cInRvZ2dsZU5hdmlnYXRpb25cIlxuXHRcdEBrZXlkb3duLnNwYWNlLmV4YWN0LnByZXZlbnQ9XCJ0b2dnbGVOYXZpZ2F0aW9uXCIgLz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG5cblx0bmFtZTogJ0FwcE5hdmlnYXRpb25Ub2dnbGUnLFxuXG5cdHByb3BzOiB7XG5cdFx0b3Blbjoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdH0sXG5cdH0sXG5cblx0bWV0aG9kczoge1xuXHRcdHRvZ2dsZU5hdmlnYXRpb24oKSB7XG5cdFx0XHR0aGlzLiRlbWl0KCd1cGRhdGU6b3BlbicsICF0aGlzLm9wZW4pXG5cdFx0fSxcblx0fSxcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XG5AaW1wb3J0ICcuLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZSc7XG5cbi5hcHAtbmF2aWdhdGlvbi10b2dnbGUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0cmlnaHQ6IDA7XG5cdG1hcmdpbi1yaWdodDogLSAkY2xpY2thYmxlLWFyZWE7XG5cdHdpZHRoOiAkY2xpY2thYmxlLWFyZWE7XG5cdGhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xuXHRwYWRkaW5nOiAkaWNvbi1tYXJnaW47XG5cblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRvcGFjaXR5OiAwLjY7XG5cblx0Zm9udC1zaXplOiAkaWNvbi1zaXplO1xuXHRsaW5lLWhlaWdodDogMTdweDtcblx0QGluY2x1ZGUgaWNvbmZvbnQoJ21lbnUnKTtcblxuXHQmOmhvdmVyLFxuXHQmOmZvY3VzIHtcblx0XHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsO1xuXHR9XG59XG5cbjwvc3R5bGU+XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuLmFwcC1uYXZpZ2F0aW9uW2RhdGEtdi1kMzkwOGMwYV0ge1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1hbmltYXRpb24tcXVpY2spLCBtYXJnaW4gdmFyKC0tYW5pbWF0aW9uLXF1aWNrKTtcXG4gIHdpZHRoOiAzMDBweDtcXG4gIHBvc2l0aW9uOiBzdGlja3k7XFxuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XFxuICB0b3A6IDUwcHg7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMTgwMDtcXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDUwcHgpO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1ncm93OiAwO1xcbiAgZmxleC1zaHJpbms6IDA7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi0tY2xvc2VbZGF0YS12LWQzOTA4YzBhXSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMzAwcHg7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxufVxcbi5hcHAtbmF2aWdhdGlvbiB1bFtkYXRhLXYtZDM5MDhjMGFdLCAuYXBwLW5hdmlnYXRpb25fX2xpc3RbZGF0YS12LWQzOTA4YzBhXSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogaW5oZXJpdDtcXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xcbi5hcHAtbmF2aWdhdGlvbltkYXRhLXYtZDM5MDhjMGFdOm5vdCguYXBwLW5hdmlnYXRpb24tLWNsb3NlKSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAtMzAwcHg7XFxufVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9BcHBOYXZpZ2F0aW9uLnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RURxQkU7QUF3SEY7RUFDQyxzQkFBc0I7RUFDdEIsMkVBQTJFO0VBQzNFLFlDM0Z1QjtFRDRGdkIsZ0JBQWdCO0VBQ2hCLHdCQUF3QjtFQUN4QixTQy9GbUI7RURnR25CLE9BQU87RUFFUCxhQUFhO0VBQ2IsMEJBQXVDO0VBQ3ZDLHNCQUFzQjtFQUN0Qiw4Q0FBOEM7RUFDOUMseUJBQXlCO0VBQ3pCLHNCQUFzQjtFQUN0QixxQkFBcUI7RUFDckIsaUJBQWlCO0VBQ2pCLDJDQUEyQztFQUMzQyxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLFlBQVk7RUFDWixjQUFjO0FBQUE7QUFFZDtJQUNDLG1CQ2hIc0I7SURpSHRCLDRCQUE0QjtBQUFBO0FBekI5QjtJQStCRSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLHNCQUFzQjtJQUN0QixhQUFhO0lBQ2Isc0JBQXNCO0FBQUE7QUFLeEI7QUFDQztJQUNDLG1CQ3JJc0I7QUFBQTtBRHNJdEJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbi5hcHAtbmF2aWdhdGlvbiB7XFxuXFx0d2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tYW5pbWF0aW9uLXF1aWNrKSwgbWFyZ2luIHZhcigtLWFuaW1hdGlvbi1xdWljayk7XFxuXFx0d2lkdGg6ICRuYXZpZ2F0aW9uLXdpZHRoO1xcblxcdHBvc2l0aW9uOiBzdGlja3k7XFxuXFx0cG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xcblxcdHRvcDogJGhlYWRlci1oZWlnaHQ7XFxuXFx0bGVmdDogMDtcXG5cXHQvLyBBYm92ZSBhcHBjb250ZW50XFxuXFx0ei1pbmRleDogMTgwMDtcXG5cXHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAjeyRoZWFkZXItaGVpZ2h0fSk7XFxuXFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xcblxcdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0LW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG5cXHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0dXNlci1zZWxlY3Q6IG5vbmU7XFxuXFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0ZmxleC1ncm93OiAwO1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcblxcdCYtLWNsb3NlIHtcXG5cXHRcXHRtYXJnaW4tbGVmdDogLSAkbmF2aWdhdGlvbi13aWR0aDtcXG5cXHRcXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcblxcdH1cXG5cXG5cXHQvL2xpc3Qgb2YgbmF2aWdhdGlvbiBpdGVtc1xcblxcdHVsLFxcblxcdCZfX2xpc3Qge1xcblxcdFxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRcXHRoZWlnaHQ6IDEwMCU7XFxuXFx0XFx0d2lkdGg6IGluaGVyaXQ7XFxuXFx0XFx0b3ZlcmZsb3cteDogaGlkZGVuO1xcblxcdFxcdG92ZXJmbG93LXk6IGF1dG87XFxuXFx0XFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0fVxcbn1cXG5cXG4vLyBXaGVuIG9uIG1vYmlsZSwgd2UgbWFrZSB0aGUgbmF2aWdhdGlvbiBzbGlkZSBvdmVyIHRoZSBhcHBjb250ZW50XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1tb2JpbGUpIHtcXG5cXHQuYXBwLW5hdmlnYXRpb246bm90KC5hcHAtbmF2aWdhdGlvbi0tY2xvc2UpIHtcXG5cXHRcXHRtYXJnaW4tbGVmdDogLSAkbmF2aWdhdGlvbi13aWR0aDtcXG5cXHR9XFxufVxcblxcblwiLFwiLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuXFxuLy8gaHR0cHM6Ly91eHBsYW5ldC5vcmcvNy1ydWxlcy1mb3ItbW9iaWxlLXVpLWJ1dHRvbi1kZXNpZ24tZTljZjJlYTU0NTU2XFxuLy8gcmVjb21tZW5kZWQgaXMgNDhweFxcbi8vIDQ0cHggaXMgd2hhdCB3ZSBjaG9vc2UgYW5kIGhhdmUgdmVyeSBnb29kIHZpc3VhbC10by11c2FiaWxpdHkgcmF0aW9cXG4kY2xpY2thYmxlLWFyZWE6IDQ0cHg7XFxuXFxuLy8gYmFja2dyb3VuZCBpY29uIHNpemVcXG4vLyBhbHNvIHVzZWQgZm9yIHRoZSBzY3NzIGljb24gZm9udFxcbiRpY29uLXNpemU6IDE2cHg7XFxuXFxuLy8gaWNvbiBwYWRkaW5nIGZvciBhICRjbGlja2FibGUtYXJlYSB3aWR0aCBhbmQgYSAkaWNvbi1zaXplIGljb25cXG4vLyAoIDQ0cHggLSAxNnB4ICkgLyAyXFxuJGljb24tbWFyZ2luOiAoJGNsaWNrYWJsZS1hcmVhIC0gJGljb24tc2l6ZSkgLyAyO1xcblxcbi8vIHRyYW5zcGFyZW5jeSBiYWNrZ3JvdW5kIGZvciBpY29uc1xcbiRpY29uLWZvY3VzLWJnOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gcG9wb3Zlcm1lbnUgYXJyb3cgd2lkdGggZnJvbSB0aGUgdHJpYW5nbGUgY2VudGVyXFxuJGFycm93LXdpZHRoOiA5cHg7XFxuXFxuLy8gb3BhY2l0aWVzXFxuJG9wYWNpdHlfZGlzYWJsZWQ6IC41O1xcbiRvcGFjaXR5X25vcm1hbDogLjc7XFxuJG9wYWNpdHlfZnVsbDogMTtcXG5cXG4vLyBtZW51IHJvdW5kIGJhY2tncm91bmQgaG92ZXIgZmVlZGJhY2tcXG4vLyBnb29kIGxvb2tpbmcgb24gZGFyayBBTkQgd2hpdGUgYmdcXG4kYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyB2YXJpb3VzIHN0cnVjdHVyZSBkYXRhIHVzZWQgaW4gdGhlIFxcbi8vIGBBcHBOYXZpZ2F0aW9uYCBjb21wb25lbnRcXG4kaGVhZGVyLWhlaWdodDogNTBweDtcXG4kbmF2aWdhdGlvbi13aWR0aDogMzAwcHg7XFxuXFxuLy8gbW9iaWxlIGJyZWFrcG9pbnRcXG4kYnJlYWtwb2ludC1tb2JpbGU6IDEwMjRweDtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5lb3RcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYud29mZlwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi50dGZcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYuc3ZnXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfM19fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzNfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgc3JjOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgLyogSUU5IENvbXBhdCBNb2RlcyAqL1xcbiAgc3JjOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpIGZvcm1hdChcXFwiZW1iZWRkZWQtb3BlbnR5cGVcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyArIFwiKSBmb3JtYXQoXFxcIndvZmZcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyArIFwiKSBmb3JtYXQoXFxcInRydWV0eXBlXFxcIiksIHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzNfX18gKyBcIikgZm9ybWF0KFxcXCJzdmdcXFwiKTtcXG4gIC8qIExlZ2FjeSBpT1MgKi9cXG59XFxuLmljb25bZGF0YS12LTE3ZWJlYWUzXSB7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXdlaWdodDogNDAwO1xcbn1cXG4uaWNvbi5hcnJvdy1sZWZ0LWRvdWJsZVtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiBXFxcIjtcXG59XFxuLmljb24uYXJyb3ctbGVmdFtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiCXFxcIjtcXG59XFxuLmljb24uYXJyb3ctcmlnaHQtZG91YmxlW2RhdGEtdi0xN2ViZWFlM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqINcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1yaWdodFtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiEXFxcIjtcXG59XFxuLmljb24uYnJlYWRjcnVtYltkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiFXFxcIjtcXG59XFxuLmljb24uY2hlY2ttYXJrW2RhdGEtdi0xN2ViZWFlM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIZcXFwiO1xcbn1cXG4uaWNvbi5jbG9zZVtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiHXFxcIjtcXG59XFxuLmljb24uY29uZmlybVtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiIXFxcIjtcXG59XFxuLmljb24uaW5mb1tkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiJXFxcIjtcXG59XFxuLmljb24ubWVudVtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiKXFxcIjtcXG59XFxuLmljb24ubW9yZVtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiLXFxcIjtcXG59XFxuLmljb24ucGF1c2VbZGF0YS12LTE3ZWJlYWUzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojFxcXCI7XFxufVxcbi5pY29uLnBsYXlbZGF0YS12LTE3ZWJlYWUzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojVxcXCI7XFxufVxcbi5pY29uLnRyaWFuZ2xlLXNbZGF0YS12LTE3ZWJlYWUzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojlxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWF3YXlbZGF0YS12LTE3ZWJlYWUzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oj1xcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWRuZFtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiQXFxcIjtcXG59XFxuLmljb24udXNlci1zdGF0dXMtaW52aXNpYmxlW2RhdGEtdi0xN2ViZWFlM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJFcXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1vbmxpbmVbZGF0YS12LTE3ZWJlYWUzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oklxcXCI7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi10b2dnbGVbZGF0YS12LTE3ZWJlYWUzXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIG1hcmdpbi1yaWdodDogLTQ0cHg7XFxuICB3aWR0aDogNDRweDtcXG4gIGhlaWdodDogNDRweDtcXG4gIHBhZGRpbmc6IDE0cHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBvcGFjaXR5OiAwLjY7XFxuICBmb250LXNpemU6IDE2cHg7XFxuICBsaW5lLWhlaWdodDogMTdweDtcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLXRvZ2dsZVtkYXRhLXYtMTdlYmVhZTNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIpcXFwiO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tdG9nZ2xlW2RhdGEtdi0xN2ViZWFlM106aG92ZXIsIC5hcHAtbmF2aWdhdGlvbi10b2dnbGVbZGF0YS12LTE3ZWJlYWUzXTpmb2N1cyB7XFxuICAgIG9wYWNpdHk6IDE7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2ZvbnRzL3Njc3MvaWNvbmZvbnQtdnVlLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBRXNFQTtFQUNDLG1DQUFtQztFQUNuQyw0Q0FBdUM7RUFBRSxxQkFBQTtFQUN6QyxtUEFHbUQ7RUFBRSxlQUFBO0FBQWdCO0FBTXRFO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtBQUFBO0FBRmxCO0lBTU0sbUNBQW1DO0lBQ25DLFlBNUdlO0FBQU87QUFxRzVCO0lBTU0sbUNBQW1DO0lBQ25DLFlBM0dRO0FBQU87QUFvR3JCO0lBTU0sbUNBQW1DO0lBQ25DLFlBMUdnQjtBQUFPO0FBbUc3QjtJQU1NLG1DQUFtQztJQUNuQyxZQXpHUztBQUFPO0FBa0d0QjtJQU1NLG1DQUFtQztJQUNuQyxZQXhHUTtBQUFPO0FBaUdyQjtJQU1NLG1DQUFtQztJQUNuQyxZQXZHTztBQUFPO0FBZ0dwQjtJQU1NLG1DQUFtQztJQUNuQyxZQXRHRztBQUFPO0FBK0ZoQjtJQU1NLG1DQUFtQztJQUNuQyxZQXJHSztBQUFPO0FBOEZsQjtJQU1NLG1DQUFtQztJQUNuQyxZQXBHRTtBQUFPO0FBNkZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBbkdFO0FBQU87QUE0RmY7SUFNTSxtQ0FBbUM7SUFDbkMsWUFsR0U7QUFBTztBQTJGZjtJQU1NLG1DQUFtQztJQUNuQyxZQWpHRztBQUFPO0FBMEZoQjtJQU1NLG1DQUFtQztJQUNuQyxZQWhHRTtBQUFPO0FBeUZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBL0ZRO0FBQU87QUF3RnJCO0lBTU0sbUNBQW1DO0lBQ25DLFlBOUZjO0FBQU87QUF1RjNCO0lBTU0sbUNBQW1DO0lBQ25DLFlBN0ZhO0FBQU87QUFzRjFCO0lBTU0sbUNBQW1DO0lBQ25DLFlBNUZtQjtBQUFPO0FBcUZoQztJQU1NLG1DQUFtQztJQUNuQyxZQTNGZ0I7QUFBTztBRnFDL0I7RUFDQyxrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFFBQVE7RUFDUixtQkNuQ29CO0VEb0NwQixXQ3BDb0I7RURxQ3BCLFlDckNvQjtFRHNDcEIsYUM5QitDO0VEZ0MvQyxlQUFlO0VBQ2YsWUFBWTtFQUVaLGVDdkNlO0VEd0NmLGlCQUFpQjtBQUFBO0FBYmxCO0lFMEJJLG1DQWpGbUI7SUFrRm5CLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsWUExRU07QUFBTztBRjZDakI7SUFrQkUsVUM5QmM7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIkc2NvcGVfdmVyc2lvbjpcXFwiODRjNDYxZlxcXCI7IEBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuQGltcG9ydCAnLi4vLi4vZm9udHMvc2Nzcy9pY29uZm9udC12dWUnO1xcblxcbi5hcHAtbmF2aWdhdGlvbi10b2dnbGUge1xcblxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHR0b3A6IDA7XFxuXFx0cmlnaHQ6IDA7XFxuXFx0bWFyZ2luLXJpZ2h0OiAtICRjbGlja2FibGUtYXJlYTtcXG5cXHR3aWR0aDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdGhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdHBhZGRpbmc6ICRpY29uLW1hcmdpbjtcXG5cXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0b3BhY2l0eTogMC42O1xcblxcblxcdGZvbnQtc2l6ZTogJGljb24tc2l6ZTtcXG5cXHRsaW5lLWhlaWdodDogMTdweDtcXG5cXHRAaW5jbHVkZSBpY29uZm9udCgnbWVudScpO1xcblxcblxcdCY6aG92ZXIsXFxuXFx0Jjpmb2N1cyB7XFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcXG5cXHR9XFxufVxcblxcblwiLFwiLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuXFxuLy8gaHR0cHM6Ly91eHBsYW5ldC5vcmcvNy1ydWxlcy1mb3ItbW9iaWxlLXVpLWJ1dHRvbi1kZXNpZ24tZTljZjJlYTU0NTU2XFxuLy8gcmVjb21tZW5kZWQgaXMgNDhweFxcbi8vIDQ0cHggaXMgd2hhdCB3ZSBjaG9vc2UgYW5kIGhhdmUgdmVyeSBnb29kIHZpc3VhbC10by11c2FiaWxpdHkgcmF0aW9cXG4kY2xpY2thYmxlLWFyZWE6IDQ0cHg7XFxuXFxuLy8gYmFja2dyb3VuZCBpY29uIHNpemVcXG4vLyBhbHNvIHVzZWQgZm9yIHRoZSBzY3NzIGljb24gZm9udFxcbiRpY29uLXNpemU6IDE2cHg7XFxuXFxuLy8gaWNvbiBwYWRkaW5nIGZvciBhICRjbGlja2FibGUtYXJlYSB3aWR0aCBhbmQgYSAkaWNvbi1zaXplIGljb25cXG4vLyAoIDQ0cHggLSAxNnB4ICkgLyAyXFxuJGljb24tbWFyZ2luOiAoJGNsaWNrYWJsZS1hcmVhIC0gJGljb24tc2l6ZSkgLyAyO1xcblxcbi8vIHRyYW5zcGFyZW5jeSBiYWNrZ3JvdW5kIGZvciBpY29uc1xcbiRpY29uLWZvY3VzLWJnOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gcG9wb3Zlcm1lbnUgYXJyb3cgd2lkdGggZnJvbSB0aGUgdHJpYW5nbGUgY2VudGVyXFxuJGFycm93LXdpZHRoOiA5cHg7XFxuXFxuLy8gb3BhY2l0aWVzXFxuJG9wYWNpdHlfZGlzYWJsZWQ6IC41O1xcbiRvcGFjaXR5X25vcm1hbDogLjc7XFxuJG9wYWNpdHlfZnVsbDogMTtcXG5cXG4vLyBtZW51IHJvdW5kIGJhY2tncm91bmQgaG92ZXIgZmVlZGJhY2tcXG4vLyBnb29kIGxvb2tpbmcgb24gZGFyayBBTkQgd2hpdGUgYmdcXG4kYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyB2YXJpb3VzIHN0cnVjdHVyZSBkYXRhIHVzZWQgaW4gdGhlIFxcbi8vIGBBcHBOYXZpZ2F0aW9uYCBjb21wb25lbnRcXG4kaGVhZGVyLWhlaWdodDogNTBweDtcXG4kbmF2aWdhdGlvbi13aWR0aDogMzAwcHg7XFxuXFxuLy8gbW9iaWxlIGJyZWFrcG9pbnRcXG4kYnJlYWtwb2ludC1tb2JpbGU6IDEwMjRweDtcXG5cIixcIiRfX2ljb25mb250X19kYXRhOiBtYXAtbWVyZ2UoaWYoZ2xvYmFsX3ZhcmlhYmxlX2V4aXN0cygnX19pY29uZm9udF9fZGF0YScpLCAkX19pY29uZm9udF9fZGF0YSwgKCkpLCAoXFxuXFx0XFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjogKFxcblxcdFxcdFxcXCJhcnJvdy1sZWZ0LWRvdWJsZVxcXCI6IFxcXCJcXFxcZWEwMVxcXCIsXFxuXFx0XFx0XFxcImFycm93LWxlZnRcXFwiOiBcXFwiXFxcXGVhMDJcXFwiLFxcblxcdFxcdFxcXCJhcnJvdy1yaWdodC1kb3VibGVcXFwiOiBcXFwiXFxcXGVhMDNcXFwiLFxcblxcdFxcdFxcXCJhcnJvdy1yaWdodFxcXCI6IFxcXCJcXFxcZWEwNFxcXCIsXFxuXFx0XFx0XFxcImJyZWFkY3J1bWJcXFwiOiBcXFwiXFxcXGVhMDVcXFwiLFxcblxcdFxcdFxcXCJjaGVja21hcmtcXFwiOiBcXFwiXFxcXGVhMDZcXFwiLFxcblxcdFxcdFxcXCJjbG9zZVxcXCI6IFxcXCJcXFxcZWEwN1xcXCIsXFxuXFx0XFx0XFxcImNvbmZpcm1cXFwiOiBcXFwiXFxcXGVhMDhcXFwiLFxcblxcdFxcdFxcXCJpbmZvXFxcIjogXFxcIlxcXFxlYTA5XFxcIixcXG5cXHRcXHRcXFwibWVudVxcXCI6IFxcXCJcXFxcZWEwYVxcXCIsXFxuXFx0XFx0XFxcIm1vcmVcXFwiOiBcXFwiXFxcXGVhMGJcXFwiLFxcblxcdFxcdFxcXCJwYXVzZVxcXCI6IFxcXCJcXFxcZWEwY1xcXCIsXFxuXFx0XFx0XFxcInBsYXlcXFwiOiBcXFwiXFxcXGVhMGRcXFwiLFxcblxcdFxcdFxcXCJ0cmlhbmdsZS1zXFxcIjogXFxcIlxcXFxlYTBlXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtYXdheVxcXCI6IFxcXCJcXFxcZWEwZlxcXCIsXFxuXFx0XFx0XFxcInVzZXItc3RhdHVzLWRuZFxcXCI6IFxcXCJcXFxcZWExMFxcXCIsXFxuXFx0XFx0XFxcInVzZXItc3RhdHVzLWludmlzaWJsZVxcXCI6IFxcXCJcXFxcZWExMVxcXCIsXFxuXFx0XFx0XFxcInVzZXItc3RhdHVzLW9ubGluZVxcXCI6IFxcXCJcXFxcZWExMlxcXCJcXG5cXHQpXFxuKSk7XFxuXFxuXFxuJGNyZWF0ZS1mb250LWZhY2U6IHRydWUgIWRlZmF1bHQ7IC8vIHNob3VsZCB0aGUgQGZvbnQtZmFjZSB0YWcgZ2V0IGNyZWF0ZWQ/XFxuXFxuLy8gc2hvdWxkIHRoZXJlIGJlIGEgY3VzdG9tIGNsYXNzIGZvciBlYWNoIGljb24/IHdpbGwgYmUgLmZpbGVuYW1lXFxuJGNyZWF0ZS1pY29uLWNsYXNzZXM6IHRydWUgIWRlZmF1bHQ7IFxcblxcbi8vIHdoYXQgaXMgdGhlIGNvbW1vbiBjbGFzcyBuYW1lIHRoYXQgaWNvbnMgc2hhcmU/IGluIHRoaXMgY2FzZSBpY29ucyBuZWVkIHRvIGhhdmUgLmljb24uZmlsZW5hbWUgaW4gdGhlaXIgY2xhc3Nlc1xcbi8vIHRoaXMgcmVxdWlyZXMgeW91IHRvIGhhdmUgMiBjbGFzc2VzIG9uIGVhY2ggaWNvbiBodG1sIGVsZW1lbnQsIGJ1dCByZWR1Y2VkIHJlZGVjbGFyYXRpb24gb2YgdGhlIGZvbnQgZmFtaWx5XFxuLy8gZm9yIGVhY2ggaWNvblxcbiRpY29uLWNvbW1vbi1jbGFzczogJ2ljb24nICFkZWZhdWx0O1xcblxcbi8vIGlmIHlvdSB3aGlzaCB0byBwcmVmaXggeW91ciBmaWxlbmFtZXMsIGhlcmUgeW91IGNhbiBkbyBzby5cXG4vLyBpZiB0aGlzIHN0cmluZyBzdGF5cyBlbXB0eSwgeW91ciBjbGFzc2VzIHdpbGwgdXNlIHRoZSBmaWxlbmFtZSwgZm9yIGV4YW1wbGVcXG4vLyBhbiBpY29uIGNhbGxlZCBzdGFyLnN2ZyB3aWxsIHJlc3VsdCBpbiBhIGNsYXNzIGNhbGxlZCAuc3Rhclxcbi8vIGlmIHlvdSB1c2UgdGhlIHByZWZpeCB0byBiZSAnaWNvbi0nIGl0IHdvdWxkIHJlc3VsdCBpbiAuaWNvbi1zdGFyXFxuJGljb24tcHJlZml4OiAnJyAhZGVmYXVsdDsgXFxuXFxuLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBmb250IGdyb3VwXFxuQGZ1bmN0aW9uIGljb25mb250LWdyb3VwKCRncm91cDogbnVsbCkge1xcbiAgQGlmIChudWxsID09ICRncm91cCkge1xcbiAgICAkZ3JvdXA6IG50aChtYXAta2V5cygkX19pY29uZm9udF9fZGF0YSksIDEpO1xcbiAgfVxcbiAgQGlmIChmYWxzZSA9PSBtYXAtaGFzLWtleSgkX19pY29uZm9udF9fZGF0YSwgJGdyb3VwKSkge1xcbiAgICBAd2FybiAnVW5kZWZpbmVkIEljb25mb250IEZhbWlseSEnO1xcbiAgICBAcmV0dXJuICgpO1xcbiAgfVxcbiAgQHJldHVybiBtYXAtZ2V0KCRfX2ljb25mb250X19kYXRhLCAkZ3JvdXApO1xcbn1cXG5cXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IGljb24gb2YgYSBncm91cFxcbkBmdW5jdGlvbiBpY29uZm9udC1pdGVtKCRuYW1lKSB7XFxuICAkc2xhc2g6IHN0ci1pbmRleCgkbmFtZSwgJy8nKTtcXG4gICRncm91cDogbnVsbDtcXG4gIEBpZiAoJHNsYXNoKSB7XFxuICAgICRncm91cDogc3RyLXNsaWNlKCRuYW1lLCAwLCAkc2xhc2ggLSAxKTtcXG4gICAgJG5hbWU6IHN0ci1zbGljZSgkbmFtZSwgJHNsYXNoICsgMSk7XFxuICB9IEBlbHNlIHtcXG4gICAgJGdyb3VwOiBudGgobWFwLWtleXMoJF9faWNvbmZvbnRfX2RhdGEpLCAxKTtcXG4gIH1cXG4gICRncm91cDogaWNvbmZvbnQtZ3JvdXAoJGdyb3VwKTtcXG4gIEBpZiAoZmFsc2UgPT0gbWFwLWhhcy1rZXkoJGdyb3VwLCAkbmFtZSkpIHtcXG4gICAgQHdhcm4gJ1VuZGVmaW5lZCBJY29uZm9udCBHbHlwaCEnO1xcbiAgICBAcmV0dXJuICcnO1xcbiAgfVxcbiAgQHJldHVybiBtYXAtZ2V0KCRncm91cCwgJG5hbWUpO1xcbn1cXG5cXG4vLyBjb21wbGV0ZSBtaXhpbmcgdG8gaW5jbHVkZSB0aGUgaWNvblxcbi8vIHVzYWdlOlxcbi8vIC5teV9pY29ueyBAaW5jbHVkZSBpY29uZm9udCgnc3RhcicpIH1cXG5AbWl4aW4gaWNvbmZvbnQoJGljb24pIHtcXG4gICRzbGFzaDogc3RyLWluZGV4KCRpY29uLCAnLycpO1xcbiAgJGdyb3VwOiBudWxsO1xcbiAgQGlmICgkc2xhc2gpIHtcXG4gICAgJGdyb3VwOiBzdHItc2xpY2UoJGljb24sIDAsICRzbGFzaCAtIDEpO1xcbiAgfSBAZWxzZSB7XFxuICAgICRncm91cDogbnRoKG1hcC1rZXlzKCRfX2ljb25mb250X19kYXRhKSwgMSk7XFxuICB9XFxuICAmOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiAkZ3JvdXA7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgY29udGVudDogaWNvbmZvbnQtaXRlbSgkaWNvbik7XFxuICB9XFxufVxcblxcbi8vIGNyZWF0ZXMgdGhlIGZvbnQgZmFjZSB0YWcgaWYgdGhlIHZhcmlhYmxlIGlzIHNldCB0byB0cnVlIChkZWZhdWx0KVxcbkBpZiAkY3JlYXRlLWZvbnQtZmFjZSA9PSB0cnVlIHtcXG4gIEBmb250LWZhY2Uge1xcbiAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgIHNyYzogdXJsKCcuLi9pY29uZm9udC12dWUtODRjNDYxZi5lb3QnKTsgLyogSUU5IENvbXBhdCBNb2RlcyAqL1xcbiAgIHNyYzogdXJsKCcuLi9pY29uZm9udC12dWUtODRjNDYxZi5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCAvKiBJRTYtSUU4ICovXFxuICAgICAgdXJsKCcuLi9pY29uZm9udC12dWUtODRjNDYxZi53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIC8qIFByZXR0eSBNb2Rlcm4gQnJvd3NlcnMgKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLnR0ZicpICBmb3JtYXQoJ3RydWV0eXBlJyksIC8qIFNhZmFyaSwgQW5kcm9pZCwgaU9TICovXFxuICAgICAgdXJsKCcuLi9pY29uZm9udC12dWUtODRjNDYxZi5zdmcnKSBmb3JtYXQoJ3N2ZycpOyAvKiBMZWdhY3kgaU9TICovXFxuICB9XFxufVxcblxcbi8vIGNyZWF0ZXMgaWNvbiBjbGFzc2VzIGZvciBlYWNoIGluZGl2aWR1YWwgbG9hZGVkIHN2ZyAoZGVmYXVsdClcXG5AaWYgJGNyZWF0ZS1pY29uLWNsYXNzZXMgPT0gdHJ1ZSB7XFxuICAuI3skaWNvbi1jb21tb24tY2xhc3N9IHtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcblxcbiAgICBAZWFjaCAkaWNvbiwgJGNvbnRlbnQgaW4gbWFwLWdldCgkX19pY29uZm9udF9fZGF0YSwgXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIikge1xcbiAgICAgICYuI3skaWNvbi1wcmVmaXh9I3skaWNvbn06YmVmb3JlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICAgICAgY29udGVudDogaWNvbmZvbnQtaXRlbShcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWYvI3skaWNvbn1cXFwiKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gKG1vZHVsZXMsIG1lZGlhUXVlcnksIGRlZHVwZSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKSB7XG4gIHZhciBfaXRlbSA9IF9zbGljZWRUb0FycmF5KGl0ZW0sIDQpLFxuICAgICAgY29udGVudCA9IF9pdGVtWzFdLFxuICAgICAgY3NzTWFwcGluZyA9IF9pdGVtWzNdO1xuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgb3B0aW9ucyA9IHt9O1xuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZSwgbm8tcGFyYW0tcmVhc3NpZ25cblxuXG4gIHVybCA9IHVybCAmJiB1cmwuX19lc01vZHVsZSA/IHVybC5kZWZhdWx0IDogdXJsO1xuXG4gIGlmICh0eXBlb2YgdXJsICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfSAvLyBJZiB1cmwgaXMgYWxyZWFkeSB3cmFwcGVkIGluIHF1b3RlcywgcmVtb3ZlIHRoZW1cblxuXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdXJsICs9IG9wdGlvbnMuaGFzaDtcbiAgfSAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG5cblxuICBpZiAoL1tcIicoKSBcXHRcXG5dLy50ZXN0KHVybCkgfHwgb3B0aW9ucy5uZWVkUXVvdGVzKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdCh1cmwucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpLCBcIlxcXCJcIik7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kMzkwOGMwYSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTdlYmVhZTMmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxudmFyIHN0eWxlc0luRG9tID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5Eb20ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5Eb21baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzSW5Eb20ucHVzaCh7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHZhciBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBhdHRyaWJ1dGVzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpLmNvbmNhdChvYmouY3NzLCBcIn1cIikgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uXCIsXG4gICAgICBjbGFzczogeyBcImFwcC1uYXZpZ2F0aW9uLS1jbG9zZVwiOiAhX3ZtLm9wZW4gfSxcbiAgICAgIGF0dHJzOiB7IGlkOiBcImFwcC1uYXZpZ2F0aW9uLXZ1ZVwiLCByb2xlOiBcIm5hdmlnYXRpb25cIiB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcIkFwcE5hdmlnYXRpb25Ub2dnbGVcIiwge1xuICAgICAgICBhdHRyczogeyBvcGVuOiBfdm0ub3BlbiB9LFxuICAgICAgICBvbjogeyBcInVwZGF0ZTpvcGVuXCI6IF92bS50b2dnbGVOYXZpZ2F0aW9uIH1cbiAgICAgIH0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fdChcImRlZmF1bHRcIiksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJ1bFwiLCB7IHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uX19saXN0XCIgfSwgW192bS5fdChcImxpc3RcIildLCAyKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uX3QoXCJmb290ZXJcIilcbiAgICBdLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJhXCIsIHtcbiAgICBzdGF0aWNDbGFzczogXCJhcHAtbmF2aWdhdGlvbi10b2dnbGVcIixcbiAgICBhdHRyczoge1xuICAgICAgaHJlZjogXCIjXCIsXG4gICAgICBcImFyaWEtZXhwYW5kZWRcIjogX3ZtLm9wZW4gPyBcInRydWVcIiA6IFwiZmFsc2VcIixcbiAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBcImFwcC1uYXZpZ2F0aW9uLXZ1ZVwiXG4gICAgfSxcbiAgICBvbjoge1xuICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICByZXR1cm4gX3ZtLnRvZ2dsZU5hdmlnYXRpb24oJGV2ZW50KVxuICAgICAgfSxcbiAgICAgIGtleWRvd246IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgISRldmVudC50eXBlLmluZGV4T2YoXCJrZXlcIikgJiZcbiAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwic3BhY2VcIiwgMzIsICRldmVudC5rZXksIFtcIiBcIiwgXCJTcGFjZWJhclwiXSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgJGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAkZXZlbnQuc2hpZnRLZXkgfHxcbiAgICAgICAgICAkZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgICAgJGV2ZW50Lm1ldGFLZXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICByZXR1cm4gX3ZtLnRvZ2dsZU5hdmlnYXRpb24oJGV2ZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKG9wdGlvbnMuZnVuY3Rpb25hbCA/IHRoaXMucGFyZW50IDogdGhpcykuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdFxuICAgICAgICApXG4gICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BcHBOYXZpZ2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzkwOGMwYSZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BcHBOYXZpZ2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQXBwTmF2aWdhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQXBwTmF2aWdhdGlvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kMzkwOGMwYSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImQzOTA4YzBhXCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGN1c3RvbSBibG9ja3MgKi9cbmltcG9ydCBibG9jazAgZnJvbSBcIi4vQXBwTmF2aWdhdGlvbi52dWU/dnVlJnR5cGU9Y3VzdG9tJmluZGV4PTAmYmxvY2tUeXBlPWRvY3NcIlxuaWYgKHR5cGVvZiBibG9jazAgPT09ICdmdW5jdGlvbicpIGJsb2NrMChjb21wb25lbnQpXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJ2QzOTA4YzBhJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJ2QzOTA4YzBhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJ2QzOTA4YzBhJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BcHBOYXZpZ2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kMzkwOGMwYSZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdkMzkwOGMwYScsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbi9BcHBOYXZpZ2F0aW9uLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHBOYXZpZ2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kMzkwOGMwYSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDM5MDhjMGEmc2NvcGVkPXRydWUmXCIiLCIvKipcbiAqIEBjb3B5cmlnaHQgMjAxOSBDaHJpc3RvcGggV3Vyc3QgPGNocmlzdG9waEB3aW56ZXJob2Ytd3Vyc3QuYXQ+XG4gKlxuICogQGF1dGhvciAyMDE5IENocmlzdG9waCBXdXJzdCA8Y2hyaXN0b3BoQHdpbnplcmhvZi13dXJzdC5hdD5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5pbXBvcnQgQXBwTmF2aWdhdGlvbiBmcm9tICcuL0FwcE5hdmlnYXRpb24nXG5cbmV4cG9ydCBkZWZhdWx0IEFwcE5hdmlnYXRpb25cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQXBwTmF2aWdhdGlvblRvZ2dsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTdlYmVhZTMmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQXBwTmF2aWdhdGlvblRvZ2dsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTdlYmVhZTMmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIxN2ViZWFlM1wiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcxN2ViZWFlMycpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcxN2ViZWFlMycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcxN2ViZWFlMycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXBwTmF2aWdhdGlvblRvZ2dsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTdlYmVhZTMmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMTdlYmVhZTMnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Ub2dnbGUvQXBwTmF2aWdhdGlvblRvZ2dsZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvblRvZ2dsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHBOYXZpZ2F0aW9uVG9nZ2xlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTdlYmVhZTMmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25Ub2dnbGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE3ZWJlYWUzJnNjb3BlZD10cnVlJlwiIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0O2Jhc2U2NCxyZzhBQU9RT0FBQUJBQUlBQUFBQUFBSUFCUU1BQUFBQUFBQUJRSkFCQUFBQUFFeFFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQU8venNQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBQUdrQVl3QnZBRzRBWmdCdkFHNEFkQUF0QUhZQWRRQmxBQzBBT0FBMEFHTUFOQUEyQURFQVpnQUFBQUFBQUJZQUFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeEFDNEFNQUFBS0FBQWFRQmpBRzhBYmdCbUFHOEFiZ0IwQUMwQWRnQjFBR1VBTFFBNEFEUUFZd0EwQURZQU1RQm1BQUFBQUFBQkFBQUFDZ0NBQUFNQUlFOVRMekowNDQvUkFBQUFyQUFBQUdCamJXRndBQTNydUFBQUFRd0FBQUZDWjJ4NVpzZEhPVXdBQUFKUUFBQUgvR2hsWVdRcjZ4ZjNBQUFLVEFBQUFEWm9hR1ZoSnYwVGhRQUFDb1FBQUFBa2FHMTBlR2UrLy84QUFBcW9BQUFBTkd4dlkyRU52QTltQUFBSzNBQUFBQ2h0WVhod0FTQUFWd0FBQ3dRQUFBQWdibUZ0WlczRStWUUFBQXNrQUFBQ3BuQnZjM1EvVkw3WEFBQU56QUFBQVJZQUJCTEtBWkFBQlFBQURHVU5yQUFBQXJ3TVpRMnNBQUFKWUFEMUJRb0FBQUlBQlFNQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFVR1pGWkFCQTZnSHFFaE9JQUFBQndoT0lBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBREFBQUFBd0FBQUJ3QUFRQUFBQUFBUEFBREFBRUFBQUFjQUFRQUlBQUFBQVFBQkFBQkFBRHFFdi8vQUFEcUFmLy9GZ0FBQVFBQUFBQUFBQUVHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQU9wZzlEQUFVQUN3QUFDUUlSQ1FRUkNRRU9wdnFDQlg3N3VnUkcrb0w2Z2dWKys3b0VSZzlDK29MNmdnRTRCRVlFUmdFNCtvTDZnZ0U0QkVZRVJnQUJBQUFBQUExdUVsQUFCUUFBQ1FFUkNRRVJCaHNIVS9kMENJd0p4UGl0L3NnSWl3aU0vc2NBQWdBQUFBQVAzdzlEQUFVQUN3QUFDUUlSQ1FRUkNRRUU0Z1YrK29JRVJ2dTZCWDRGZi9xQkJFYjd1Z1JHQlg0RmZ2N0krN3I3dXY3SUJYNEZmdjdJKzdyN3VnQUJBQUFBQUE2bUVsQUFCUUFBQ1FFUkNRRVJEVzc0clFpTDkzVUp4QWRUQVRuM2RQZDFBVGdBQVFBQUFBQUdOeE9JQUFVQUFCTUhDUUVYQVpTVUJYTDZqcFFGb3hPSVZmYVI5cEZWQ2NRQUFBRUFBQUFBRVljUGd3QUZBQUFKQlEvTjkvUDcrLzVHQmI4Snh3K0Q5L01FQmY1SCtrRUp4Z0FCQUFBQUFCRVhFUmNBQ3dBQUNRc1JGLzN0K3NENndQM3RCVUQ2d0FJVEJVQUZRQUlUK3NBRWhQM3RCVUQ2d0FJVEJVQUZRQUlUK3NBRlFQM3Qrc0FBQWYvL0FBQVRreExzQURNQUFBRWlCdzRCRnhZWEFTRW1Cd1lIQmdjR0ZCY1dGeFlYRmpjaEFRWUhCaGNXRng0QkZ4WVhGamMyTndFMk56WW5KaWNCTGdFS1lHVlBTa1lRRWtnRjEvSGdUVDQ2S1NjVUZCUVVKeWs2UGswT0lQb3BOeG9ZQXdNYkdWWTFOenMrT2o4MUIrMDdGUlVVRlR6NEV5eDBFdXc1Tkt4WllFZjZLZ0ViR0M0c09UaDRPRGtzTGhnYkF2b3BOVDg3UGpvM05sWVpHZ01ER0JrNEIrdzhVVkJQVWp3SDdDMHlBQUFBQWdBQUFBQU9waEpRQUJnQVJnQUFBU0lIRGdFSEJoUVhIZ0VYRmpJM1BnRTNOalFuTGdFbkpnRWlCd1lIQmhRWEZoY1dNeUVSSVNJSEJnY0dGQmNXRnhZM0lUSTNOamMyTkNjbUp5WWpJUkUwSnlZbkppTUpkbTltWXBncEt5c3BtR0ptM21aaWx5b3JLeXFYWW1iOE5sWklSeWtyS3lsSFNGWUNjZjJQVmtoSEtTc3JLVWRJVmdkVFZVaEhLU3NyS1VkSVZmMlBLeWxIU1ZVU1VDc3FsMk5sMzJWaW1Da3JLeW1ZWW1YZlpXT1hLaXY1NVNzcFIwaXJTRWNwSy9ubUt5bEhTYXBKUnlrckFTb3BSMG1xU1VjcEt3ZFRWVWhIS1NzQUFBTUFBQUFBRVJjUkZ3QURBQWNBQ3dBQUFSRWhFUUVSSVJFQkVTRVJBbkVPcHZGYURxYnhXZzZtRVJmOWp3SngrZWI5andKeCtlWDlqd0p4QUFNQUFBQUFFcDRMNXdBWUFERUFTZ0FBQVRJWEhnRVhGaFFIRGdFSEJpSW5MZ0VuSmpRM1BnRTNOaUV5Rng0QkZ4WVVCdzRCQndZaUp5NEJKeVkwTno0Qk56WWhNaGNlQVJjV0ZBY09BUWNHSWljdUFTY21ORGMrQVRjMkF3MXdaV0tZS1NzcktaaGlaZDltWXBjcUt5c3FsMkptQnladlptS1hLaXNyS3BkaVp0NW1ZcGNxS3lzcWwySm1CeVp2Wm1LWEtpc3JLcGRpWnQ5bFlwZ3BLeXNwbUdKbEMrY3JLcGRpWnQ1bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltYmVabUtYS2lzcktwZGladDVtWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1iZVptS1hLaXNBQUFBQUFnQUFBQUFQM3cvZkFBTUFCd0FBQVJFaEVTRVJJUkVEcWdUaUFuRUU0Zy9mODhzTU5mUExERFVBQUFBQkFBQUFBQkVYRVJjQUFnQUFDUUlDY1E2bThWb1JGL2l0K0swQUFRQUFBQUFPcGd3MUFBSUFBQWtDQk9JRTRnVGlERFg3SGdUZ0FBSC80QUFBRTJrVGFRQXhBQUFCQkFVRUJRUURBZ01DRVJBVEVoTVNCUVFGQkNFZ0pTUWxKQk1TRXhJVEJnQUZCQ0VnSlNRbkppY21Bd0lSRUJNU0FBaHMvcGorc2Y2Ni91Mys3c2JLYTI2QWUrbmxBVGtCUEFGeUFYNEJsZ0Z4QVdFQlZnRXVBU3JyN0ptY09MeitLZjc1L3ZQKzZ2NisvczcrMmYzN3VMdGpaMUJPQVNjVGFTNlhrK25uL3RmKzAvNnIvcC8rai81cS9vTCtqdjdFL3NmbDZIeUFhMmpGd2dFTkFRNEJRd0ZMQVduTS90cE9VR2RqdTdqNy9RRW5BVElCUWdFbEFSTUJEUUhMQUFJQUFBQUFFNGdUaUFBa0FFQUFBQUVnQlFRRkJBTUNBd0lRRXhJVEVnVUVCUVFnSlNRbEpCTVNFeElRQXdJREFpVWtKU1FCSVRJWEhnRVhGaFFIRGdFSEJpTWhJaWN1QVNjbU5EYytBVGMyQ2NUK2F2NkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUFnSHpvNWY3SC9zVCtqdjZDK3NFSFUxdFhWSVFrSmlZa2hGUlhXL2l0WEZkVWhDUW1KaVNFVkZjVGlJQjg2T1greC83RS9vNytndnpVL29MK2p2N0Uvc2ZsNkh5QWdIem81UUU1QVR3QmNnRitBeXdCZmdGeUFUd0JPZVhvZklENEVTWWxoRk5YdUZkVGhDVW1KaVdFVTFlNFYxT0VKU1lBQUFBQ0FBQUFBQk9JRTRnQUpBQTlBQUFCSUFVRUJRUURBZ01DRUJNU0V4SUZCQVVFSUNVa0pTUVRFaE1TRUFNQ0F3SWxKQ1VrQVNBRkJBQVRFaEFEQWdBRkJDQWxKQUFEQWhBVEVnQWxKQW5FL21yK2d2Nk8vc1QreCtYb2ZJQ0FmT2psQVRrQlBBRnlBWDRETEFGK0FYSUJQQUU1NWVoOGdJQjg2T1greC83RS9vNytndjVxQVRjQkZ3RVBBWnR3ZEhSdy9tWCs4ZjdwL1pMKzZmN3gvbVZ3ZEhSd0Fac0JEd0VYRTRpQWZPamwvc2YreFA2Ty9vTDgxUDZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBL0JoMGNQNWwvdkgrNmYyUy91bis4ZjVsY0hSMGNBR2JBUThCRndKdUFSY0JEd0diY0hRQUFBQUNBQUFBQUJPSUU0Z0FBd0FvQUFBQklSRWhBU0FGQkFVRUF3SURBaEFURWhNU0JRUUZCQ0FsSkNVa0V4SVRFaEFEQWdNQ0pTUWxKQVhjQjlENE1BUG8vbXIrZ3Y2Ty9zVCt4K1hvZklDQWZPamxBVGtCUEFGeUFYNERMQUYrQVhJQlBBRTU1ZWg4Z0lCODZPWCt4LzdFL283K2dnWGNCOUFGM0lCODZPWCt4LzdFL283K2d2elUvb0wranY3RS9zZmw2SHlBZ0h6bzVRRTVBVHdCY2dGK0F5d0JmZ0Z5QVR3Qk9lWG9mSUFBQUFFQUFBQUJBQUEvN1B3N1h3ODg5UUFMRTRnQUFBQUEzTlZIOVFBQUFBRGNoR3YxLytBQUFCT1RFNGdBQUFBSUFBSUFBQUFBQUFBQUFRQUFFNGdBQUFBQUU0ai80UC8xRTVNQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUFBQUFFNGdBQUJPSUFBQVRpQUFBRTRnQUFBWTJBQUFUaUFBQUFBRC8vd0FBQUFBQUFBQUFBQUFBQVAvZ0FBQUFBQUFBQUFBQUFBQWlBRFlBV0FCc0FJQUFsQUMwQVE0QmZBR2FBaEFDSmdJMEFrSUNxQU1pQTZZRC9nQUJBQUFBRXdCTEFBTUFBQUFBQUFJQUFBQUtBQW9BQUFEL0FBQUFBQUFBQUFBQUVBREdBQUVBQUFBQUFBRUFGQUFBQUFFQUFBQUFBQUlBQndBVUFBRUFBQUFBQUFNQUZBQWJBQUVBQUFBQUFBUUFGQUF2QUFFQUFBQUFBQVVBQ3dCREFBRUFBQUFBQUFZQUZBQk9BQUVBQUFBQUFBb0FLd0JpQUFFQUFBQUFBQXNBRXdDTkFBTUFBUVFKQUFFQUtBQ2dBQU1BQVFRSkFBSUFEZ0RJQUFNQUFRUUpBQU1BS0FEV0FBTUFBUVFKQUFRQUtBRCtBQU1BQVFRSkFBVUFGZ0VtQUFNQUFRUUpBQVlBS0FFOEFBTUFBUVFKQUFvQVZnRmtBQU1BQVFRSkFBc0FKZ0c2YVdOdmJtWnZiblF0ZG5WbExUZzBZelEyTVdaU1pXZDFiR0Z5YVdOdmJtWnZiblF0ZG5WbExUZzBZelEyTVdacFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFpsWmxjbk5wYjI0Z01TNHdhV052Ym1admJuUXRkblZsTFRnMFl6UTJNV1pIWlc1bGNtRjBaV1FnWW5rZ2MzWm5NblIwWmlCbWNtOXRJRVp2Ym5SbGJHeHZJSEJ5YjJwbFkzUXVhSFIwY0RvdkwyWnZiblJsYkd4dkxtTnZiUUJwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQVVnQmxBR2NBZFFCc0FHRUFjZ0JwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQWFRQmpBRzhBYmdCbUFHOEFiZ0IwQUMwQWRnQjFBR1VBTFFBNEFEUUFZd0EwQURZQU1RQm1BRllBWlFCeUFITUFhUUJ2QUc0QUlBQXhBQzRBTUFCcEFHTUFid0J1QUdZQWJ3QnVBSFFBTFFCMkFIVUFaUUF0QURnQU5BQmpBRFFBTmdBeEFHWUFSd0JsQUc0QVpRQnlBR0VBZEFCbEFHUUFJQUJpQUhrQUlBQnpBSFlBWndBeUFIUUFkQUJtQUNBQVpnQnlBRzhBYlFBZ0FFWUFid0J1QUhRQVpRQnNBR3dBYndBZ0FIQUFjZ0J2QUdvQVpRQmpBSFFBTGdCb0FIUUFkQUJ3QURvQUx3QXZBR1lBYndCdUFIUUFaUUJzQUd3QWJ3QXVBR01BYndCdEFBQUFBZ0FBQUFBQUFBQXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRXdBVEFBQUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTVJZWEp5YjNjdGJHVm1kQzFrYjNWaWJHVUtZWEp5YjNjdGJHVm1kQkpoY25KdmR5MXlhV2RvZEMxa2IzVmliR1VMWVhKeWIzY3RjbWxuYUhRS1luSmxZV1JqY25WdFlnbGphR1ZqYTIxaGNtc0ZZMnh2YzJVSFkyOXVabWx5YlFScGJtWnZCRzFsYm5VRWJXOXlaUVZ3WVhWelpRUndiR0Y1Q25SeWFXRnVaMnhsTFhNUWRYTmxjaTF6ZEdGMGRYTXRZWGRoZVE5MWMyVnlMWE4wWVhSMWN5MWtibVFWZFhObGNpMXpkR0YwZFhNdGFXNTJhWE5wWW14bEVuVnpaWEl0YzNSaGRIVnpMVzl1YkdsdVpRQUFcIiIsImV4cG9ydCBkZWZhdWx0IFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJ6ZEdGdVpHRnNiMjVsUFNKdWJ5SS9QandoUkU5RFZGbFFSU0J6ZG1jZ1VGVkNURWxESUNJdEx5OVhNME12TDBSVVJDQlRWa2NnTVM0eEx5OUZUaUlnSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDBkeVlYQm9hV056TDFOV1J5OHhMakV2UkZSRUwzTjJaekV4TG1SMFpDSWdQanh6ZG1jZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0OGJXVjBZV1JoZEdFK1BDOXRaWFJoWkdGMFlUNDhaR1ZtY3o0OFptOXVkQ0JwWkQwaWFXTnZibVp2Ym5RdGRuVmxMVGcwWXpRMk1XWWlJR2h2Y21sNkxXRmtkaTE0UFNJMU1EQXdJajQ4Wm05dWRDMW1ZV05sSUdadmJuUXRabUZ0YVd4NVBTSnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhaaUlnWm05dWRDMTNaV2xuYUhROUlqUXdNQ0lnWm05dWRDMXpkSEpsZEdOb1BTSnViM0p0WVd3aUlIVnVhWFJ6TFhCbGNpMWxiVDBpTlRBd01DSWdjR0Z1YjNObExURTlJaklnTUNBMUlETWdNQ0F3SURBZ01DQXdJREFpSUdGelkyVnVkRDBpTlRBd01DSWdaR1Z6WTJWdWREMGlNQ0lnZUMxb1pXbG5hSFE5SWpBaUlHSmliM2c5SWkwek1pQXdJRFV3TVRFZ05UQXdNQ0lnZFc1a1pYSnNhVzVsTFhSb2FXTnJibVZ6Y3owaU1DSWdkVzVrWlhKc2FXNWxMWEJ2YzJsMGFXOXVQU0kxTUNJZ2RXNXBZMjlrWlMxeVlXNW5aVDBpVlN0bFlUQXhMV1ZoTVRJaUlDOCtQRzFwYzNOcGJtY3RaMng1Y0dnZ2FHOXlhWG90WVdSMkxYZzlJakFpSUNBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSmhjbkp2ZHkxc1pXWjBMV1J2ZFdKc1pTSWdkVzVwWTI5a1pUMGlKaU40WldFd01Uc2lJR1E5SWswek56VXdJRE01TURZZ2JDMHhOREEySUMweE5EQTJJR3d4TkRBMklDMHhOREEySUd3d0lETXhNaUJzTFRFd09UUWdNVEE1TkNCc01UQTVOQ0F4TURrMElHd3dJRE14TWlCYVRUSXpORFFnTXprd05pQnNMVEUwTURZZ0xURTBNRFlnYkRFME1EWWdMVEUwTURZZ2JEQWdNekV5SUd3dE1UQTVOQ0F4TURrMElHd3hNRGswSURFd09UUWdiREFnTXpFeUlGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW1GeWNtOTNMV3hsWm5RaUlIVnVhV052WkdVOUlpWWplR1ZoTURJN0lpQmtQU0pOTVRVMk15QXlOVEF3SUd3eE9EYzFJQzB4T0RjMUlHd3dJQzB6TVRJZ2JDMHlNVGc0SURJeE9EY2diREl4T0RnZ01qRTRPQ0JzTUNBdE16RXpJR3d0TVRnM05TQXRNVGczTlNCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0poY25KdmR5MXlhV2RvZEMxa2IzVmliR1VpSUhWdWFXTnZaR1U5SWlZamVHVmhNRE03SWlCa1BTSk5NVEkxTUNBeE1EazBJR3d4TkRBMklERTBNRFlnYkMweE5EQTJJREUwTURZZ2JEQWdMVE14TWlCc01UQTVOQ0F0TVRBNU5DQnNMVEV3T1RRZ0xURXdPVFFnYkRBZ0xUTXhNaUJhVFRJMk5UWWdNVEE1TkNCc01UUXdOeUF4TkRBMklHd3RNVFF3TnlBeE5EQTJJR3d3SUMwek1USWdiREV3T1RRZ0xURXdPVFFnYkMweE1EazBJQzB4TURrMElHd3dJQzB6TVRJZ1dpSWdMejQ4WjJ4NWNHZ2daMng1Y0dndGJtRnRaVDBpWVhKeWIzY3RjbWxuYUhRaUlIVnVhV052WkdVOUlpWWplR1ZoTURRN0lpQmtQU0pOTXpRek9DQXlOVEF3SUd3dE1UZzNOU0F4T0RjMUlHd3dJRE14TXlCc01qRTROeUF0TWpFNE9DQnNMVEl4T0RjZ0xUSXhPRGNnYkRBZ016RXlJR3d4T0RjMUlERTROelVnV2lJZ0x6NDhaMng1Y0dnZ1oyeDVjR2d0Ym1GdFpUMGlZbkpsWVdSamNuVnRZaUlnZFc1cFkyOWtaVDBpSmlONFpXRXdOVHNpSUdROUlrMHhORGdnTlRBd01DQnNMVEUwT0NBdE9EVWdiREV6T1RRZ0xUSTBNVFVnYkMweE16azBJQzB5TkRFMUlHd3hORGdnTFRnMUlHd3hORFF6SURJMU1EQWdiQzB4TkRReklESTFNREFnV2lJZ0x6NDhaMng1Y0dnZ1oyeDVjR2d0Ym1GdFpUMGlZMmhsWTJ0dFlYSnJJaUIxYm1samIyUmxQU0ltSTNobFlUQTJPeUlnWkQwaVRUUXdORFVnTXprM01TQnNMVEl3TmpFZ0xUSXdOakVnYkMweE1ESTVJREV3TWprZ2JDMDBORElnTFRRME1TQnNNVFEzTVNBdE1UUTNNU0JzTWpVd015QXlOVEF5SUd3dE5EUXlJRFEwTWlCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0pqYkc5elpTSWdkVzVwWTI5a1pUMGlKaU40WldFd056c2lJR1E5SWswME16YzFJREV4TlRZZ2JDMDFNekVnTFRVek1TQnNMVEV6TkRRZ01UTTBOQ0JzTFRFek5EUWdMVEV6TkRRZ2JDMDFNekVnTlRNeElHd3hNelEwSURFek5EUWdiQzB4TXpRMElERXpORFFnYkRVek1TQTFNekVnYkRFek5EUWdMVEV6TkRRZ2JERXpORFFnTVRNME5DQnNOVE14SUMwMU16RWdiQzB4TXpRMElDMHhNelEwSUd3eE16UTBJQzB4TXpRMElGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW1OdmJtWnBjbTBpSUhWdWFXTnZaR1U5SWlZamVHVmhNRGc3SWlCa1BTSk5NalkxTmlBME9EUTBJSEV0TVRBeElEQWdMVEU0TUNBdE5UY2djUzAzTkNBdE5USWdMVEV3T1NBdE1UTTRJSEV0TXpVZ0xUZzJJQzB4T1NBdE1UYzFJSEV4T0NBdE9UWWdPVEFnTFRFMk55QnNNVFE1TlNBdE1UUTVOQ0JzTFRNMk1UWWdNQ0J4TFRjM0lERWdMVEV6T1NBdE1qWWdjUzAxT0NBdE1qUWdMVGs1SUMwM01DQnhMVE01SUMwME5DQXROVGtnTFRFd01TQnhMVEl3SUMwMU5pQXRNakFnTFRFeE5pQnhNQ0F0TmpBZ01qQWdMVEV4TmlCeE1qQWdMVFUzSURVNUlDMHhNREVnY1RReElDMDBOaUE1T1NBdE56QWdjVFl5SUMweU55QXhNemtnTFRJMUlHd3pOakUySURBZ2JDMHhORGsxSUMweE5EazFJSEV0TlRVZ0xUVXpJQzA0TVNBdE1URTJJSEV0TWpRZ0xUVTVJQzB5TVNBdE1USXhJSEV6SUMwMU9DQXpNQ0F0TVRFeklIRXlOU0F0TlRRZ05qZ2dMVGszSUhFME15QXRORE1nT1RZZ0xUWTRJSEUxTlNBdE1qWWdNVEUwSUMweU9TQnhOaklnTFRNZ01USXdJREl4SUhFMk15QXlOU0F4TVRZZ09ERWdiREl3TWprZ01qQXlPQ0J4TlRrZ05qQWdPREFnTVRReElIRXlNU0E0TUNBeElERTFPU0J4TFRJeElEZ3lJQzA0TVNBeE5ESWdiQzB5TURJNUlESXdNamdnY1MwME5DQTBOU0F0TVRBeUlEY3dJSEV0TlRnZ01qVWdMVEV5TWlBeU5TQmFJaUF2UGp4bmJIbHdhQ0JuYkhsd2FDMXVZVzFsUFNKcGJtWnZJaUIxYm1samIyUmxQU0ltSTNobFlUQTVPeUlnWkQwaVRUSTBNaklnTkRZNE9DQnhMVEV4TVNBd0lDMHlNVE1nTFRReklIRXRPVGdnTFRReUlDMHhOelFnTFRFeE55NDFJSEV0TnpZZ0xUYzFMalVnTFRFeE55QXRNVGMwTGpVZ2NTMDBNeUF0TVRBeElDMDBNeUF0TWpFeUxqVWdjVEFnTFRFeE1TNDFJRFF6SUMweU1USXVOU0J4TkRFZ0xUazRJREV4TnlBdE1UYzBJSEUzTmlBdE56WWdNVGMwSUMweE1UY2djVEV3TWlBdE5ETWdNakV6SUMwME15QnhNVEV4SURBZ01qRXpJRFF6SUhFNU9DQTBNU0F4TnpNdU5TQXhNVGNnY1RjMUxqVWdOellnTVRFM0xqVWdNVGMwSUhFME15QXhNREVnTkRNZ01qRXlMalVnY1RBZ01URXhMalVnTFRReklESXhNaTQxSUhFdE5ESWdPVGtnTFRFeE55NDFJREUzTkM0MUlIRXROelV1TlNBM05TNDFJQzB4TnpNdU5TQXhNVGN1TlNCeExURXdNaUEwTXlBdE1qRXpJRFF6SUZwTk1UVTJNeUF6TVRJMUlIRXRPRFlnTUNBdE1UVTRJQzAwTXlCeExUY3hJQzAwTVNBdE1URXlJQzB4TVRJZ2NTMDBNeUF0TnpJZ0xUUXpJQzB4TlRjdU5TQnhNQ0F0T0RVdU5TQTBNeUF0TVRVM0xqVWdjVFF4SUMwM01TQXhNVElnTFRFeE1pQnhOeklnTFRReklERTFPQ0F0TkRNZ2JEWXlOU0F3SUd3d0lDMHhOVFl5SUd3dE5qSTFJREFnY1MwNE5pQXdJQzB4TlRnZ0xUUXpJSEV0TnpFZ0xUUXhJQzB4TVRJZ0xURXhNaUJ4TFRReklDMDNNeUF0TkRNZ0xURTFPQ0J4TUNBdE9EVWdORE1nTFRFMU9DQnhOREVnTFRjeElERXhNaUF0TVRFeUlIRTNNaUF0TkRNZ01UVTRJQzAwTWlCc01UZzNOU0F3SUhFNE5TQXdJREUxTnlBME1pQnhOekVnTkRFZ01URXlJREV4TWlCeE5ETWdOek1nTkRNZ01UVTRJSEV3SURnMUlDMDBNeUF4TlRnZ2NTMDBNU0EzTVNBdE1URXlJREV4TWlCeExUY3lJRFF6SUMweE5UY2dORE1nYkMwMk1qVWdNQ0JzTUNBeE9EYzFJSEV3SURnMUlDMDBNeUF4TlRjZ2NTMDBNU0EzTVNBdE1URXlJREV4TWlCeExUY3pJRFF6SUMweE5UZ2dORE1nYkMwNU16Y2dNQ0JhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSnRaVzUxSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJoT3lJZ1pEMGlUVFl5TlNBME16YzFJR3d3SUMwMk1qVWdiRE0zTlRBZ01DQnNNQ0EyTWpVZ2JDMHpOelV3SURBZ1drMDJNalVnTWpneE15QnNNQ0F0TmpJMUlHd3pOelV3SURBZ2JEQWdOakkxSUd3dE16YzFNQ0F3SUZwTk5qSTFJREV5TlRBZ2JEQWdMVFl5TlNCc016YzFNQ0F3SUd3d0lEWXlOU0JzTFRNM05UQWdNQ0JhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSnRiM0psSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJpT3lJZ1pEMGlUVGM0TVNBek1EUTNJSEV4TVRJZ01DQXlNVE1nTFRReklIRTVPQ0F0TkRJZ01UYzBJQzB4TVRjdU5TQnhOellnTFRjMUxqVWdNVEUzSUMweE56TXVOU0J4TkRNZ0xURXdNaUEwTXlBdE1qRXpJSEV3SUMweE1URWdMVFF6SUMweU1UTWdjUzAwTVNBdE9UZ2dMVEV4TnlBdE1UY3pMalVnY1MwM05pQXROelV1TlNBdE1UYzBJQzB4TVRjdU5TQnhMVEV3TVNBdE5ETWdMVEl4TWk0MUlDMDBNeUJ4TFRFeE1TNDFJREFnTFRJeE15NDFJRFF6SUhFdE9UZ2dORElnTFRFM015NDFJREV4Tnk0MUlIRXROelV1TlNBM05TNDFJQzB4TVRjdU5TQXhOek11TlNCeExUUXpJREV3TWlBdE5ETWdNakV6SUhFd0lERXhNU0EwTXlBeU1UTWdjVFF5SURrNElERXhOeTQxSURFM015NDFJSEUzTlM0MUlEYzFMalVnTVRjekxqVWdNVEUzTGpVZ2NURXdNaUEwTXlBeU1UTWdORE1nV2sweU5UQXdJRE13TkRjZ2NURXhNU0F3SURJeE15QXRORE1nY1RrNElDMDBNaUF4TnpNdU5TQXRNVEUzTGpVZ2NUYzFMalVnTFRjMUxqVWdNVEUzTGpVZ0xURTNNeTQxSUhFME15QXRNVEF5SURReklDMHlNVE1nY1RBZ0xURXhNU0F0TkRNZ0xUSXhNeUJ4TFRReUlDMDVPQ0F0TVRFM0xqVWdMVEUzTXk0MUlIRXROelV1TlNBdE56VXVOU0F0TVRjekxqVWdMVEV4Tnk0MUlIRXRNVEF5SUMwME15QXRNakV6SUMwME15QnhMVEV4TVNBd0lDMHlNVE1nTkRNZ2NTMDVPQ0EwTWlBdE1UY3pMalVnTVRFM0xqVWdjUzAzTlM0MUlEYzFMalVnTFRFeE55NDFJREUzTXk0MUlIRXRORE1nTVRBeUlDMDBNeUF5TVRNZ2NUQWdNVEV4SURReklESXhNeUJ4TkRJZ09UZ2dNVEUzTGpVZ01UY3pMalVnY1RjMUxqVWdOelV1TlNBeE56TXVOU0F4TVRjdU5TQnhNVEF5SURReklESXhNeUEwTXlCYVRUUXlNVGtnTXpBME55QnhNVEV4SURBZ01qRXpJQzAwTXlCeE9UZ2dMVFF5SURFM015NDFJQzB4TVRjdU5TQnhOelV1TlNBdE56VXVOU0F4TVRjdU5TQXRNVGN6TGpVZ2NUUXpJQzB4TURJZ05ETWdMVEl4TXlCeE1DQXRNVEV4SUMwME15QXRNakV6SUhFdE5ESWdMVGs0SUMweE1UY3VOU0F0TVRjekxqVWdjUzAzTlM0MUlDMDNOUzQxSUMweE56TXVOU0F0TVRFM0xqVWdjUzB4TURJZ0xUUXpJQzB5TVRNdU5TQXRORE1nY1MweE1URXVOU0F3SUMweU1USXVOU0EwTXlCeExUazRJRFF5SUMweE56UWdNVEUzTGpVZ2NTMDNOaUEzTlM0MUlDMHhNVGNnTVRjekxqVWdjUzAwTXlBeE1ESWdMVFF6SURJeE15QnhNQ0F4TVRFZ05ETWdNakV6SUhFME1TQTVPQ0F4TVRjZ01UY3pMalVnY1RjMklEYzFMalVnTVRjMElERXhOeTQxSUhFeE1ERWdORE1nTWpFeklEUXpJRm9pSUM4K1BHZHNlWEJvSUdkc2VYQm9MVzVoYldVOUluQmhkWE5sSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJqT3lJZ1pEMGlUVGt6T0NBME1EWXpJR3d3SUMwek1USTFJR3d4TWpVd0lEQWdiREFnTXpFeU5TQnNMVEV5TlRBZ01DQmFUVEk0TVRNZ05EQTJNeUJzTUNBdE16RXlOU0JzTVRJMU1DQXdJR3d3SURNeE1qVWdiQzB4TWpVd0lEQWdXaUlnTHo0OFoyeDVjR2dnWjJ4NWNHZ3RibUZ0WlQwaWNHeGhlU0lnZFc1cFkyOWtaVDBpSmlONFpXRXdaRHNpSUdROUlrMDJNalVnTkRNM05TQnNNemMxTUNBdE1UZzNOU0JzTFRNM05UQWdMVEU0TnpVZ2JEQWdNemMxTUNCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0owY21saGJtZHNaUzF6SWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJsT3lJZ1pEMGlUVEV5TlRBZ016RXlOU0JzTVRJMU1DQXRNVEkxTUNCc01USTFNQ0F4TWpRNElHd3RNalV3TUNBeUlGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW5WelpYSXRjM1JoZEhWekxXRjNZWGtpSUhWdWFXTnZaR1U5SWlZamVHVmhNR1k3SWlCa1BTSk5NakUxTmlBME9UWTVJSEV0TXpZd0lDMDBOaUF0TmprMUlDMHhPVGNnY1Mwek1qWWdMVEUwTnlBdE5qQXhJQzB6T0RBZ2NTMHlOelFnTFRJek1TQXRORGN5SUMwMU1qZ2djUzB5TURJZ0xUTXdNU0F0TXpBNUlDMDJORElnY1MweE1UQWdMVE0xTXlBdE1URXdJQzAzTWpJZ2NUQWdMVFF3TmlBeE1qZ2dMVGM0T0NCeE1USXpJQzB6TnpBZ016VTJJQzAyT0RZZ2NUSXlPU0F0TXpFeklEVTBNaUF0TlRReUlIRXpNVFlnTFRJek1pQTJPRFlnTFRNMU5pQnhNemd5SUMweE1qZ2dOemc0SUMweE1qZ2djVE0yT1NBd0lEY3lNaUF4TURjZ2NUTTBNaUF4TURRZ05qUTBJRE13TVNCeE1qazRJREU1TkNBMU16TWdORFl6SUhFeU16WWdNamN3SURNNE9TQTFPVE1nY1RFMU5pQXpNekVnTWpFeUlEWTVNaUJ4TFRFNE9DQXRNakEwSUMwME1qTXVOU0F0TXpVeElIRXRNak0xTGpVZ0xURTBOeUF0TkRrNExqVWdMVEl5TlNCeExUSTJPU0F0T0RBZ0xUVTBOeUF0T0RBZ2NTMHpNaklnTUNBdE5qSTRJREV3TXlCeExUSTVOU0E1T1NBdE5UUTRJREk0TmlCeExUSTFNU0F4T0RRZ0xUUXpOU0EwTXpVZ2NTMHhPRGNnTWpVeklDMHlPRFlnTlRRNElIRXRNVEF6SURNd05pQXRNVEF6SURZeU9DQnhNQ0F5T1RNZ09EQWdOVFk0SUhFM09DQXlOamtnTWpJMUxqVWdORGs0TGpVZ2NURTBOeTQxSURJeU9TNDFJRE0xTUM0MUlEUXdNaTQxSUZvaUlDOCtQR2RzZVhCb0lHZHNlWEJvTFc1aGJXVTlJblZ6WlhJdGMzUmhkSFZ6TFdSdVpDSWdkVzVwWTI5a1pUMGlKaU40WldFeE1Ec2lJR1E5SWsweU5UQXdJRFV3TURBZ2NTMDBNRFlnTUNBdE56ZzRJQzB4TWpnZ2NTMHpOekFnTFRFeU5DQXROamcySUMwek5UWWdjUzB6TVRNZ0xUSXlPU0F0TlRReUlDMDFORElnY1MweU16SWdMVE14TmlBdE16VTJJQzAyT0RZZ2NTMHhNamdnTFRNNE1pQXRNVEk0SUMwM09EZ2djVEFnTFRRd05pQXhNamdnTFRjNE9DQnhNVEkwSUMwek56QWdNelUySUMwMk9EWWdjVEl5T1NBdE16RXpJRFUwTWlBdE5UUXlJSEV6TVRZZ0xUSXpNaUEyT0RZZ0xUTTFOaUJ4TXpneUlDMHhNamdnTnpnNElDMHhNamdnY1RRd05pQXdJRGM0T0NBeE1qZ2djVE0zTUNBeE1qUWdOamcySURNMU5pQnhNekV6SURJeU9TQTFORElnTlRReUlIRXlNeklnTXpFMklETTFOaUEyT0RZZ2NURXlPQ0F6T0RJZ01USTRJRGM0T0NCeE1DQTBNRFlnTFRFeU9DQTNPRGdnY1MweE1qUWdNemN3SUMwek5UWWdOamcySUhFdE1qSTVJRE14TXlBdE5UUXlJRFUwTWlCeExUTXhOaUF5TXpJZ0xUWTROaUF6TlRZZ2NTMHpPRElnTVRJNElDMDNPRGdnTVRJNElGcE5NVFUyTXlBeU9UWTVJR3d4T0RjMUlEQWdjVGt4SURBZ01UYzRJQzB6T0NCeE9EUWdMVE0zSURFMU1DQXRNVEF6SUhFMk5pQXROallnTVRBeUlDMHhORGtnY1RNNElDMDROeUF6T0NBdE1UYzVJSEV3SUMwNU1pQXRNemdnTFRFM09TQnhMVE0ySUMwNE15QXRNVEF5SUMweE5Ea2djUzAyTmlBdE5qWWdMVEUxTUNBdE1UQXpJSEV0T0RjZ0xUTTRJQzB4TnpnZ0xUTTRJR3d0TVRnM05TQXdJSEV0T1RJZ01DQXRNVGM1SURNNElIRXRPRFFnTXpjZ0xURTFNQ0F4TURNZ2NTMDJOaUEyTmlBdE1UQXlJREUwT1NCeExUTTRJRGczSUMwek9DQXhOemtnY1RBZ09USWdNemdnTVRjNUlIRXpOaUE0TXlBeE1ESWdNVFE1SUhFMk5pQTJOaUF4TlRBZ01UQXpJSEU0TnlBek9DQXhOemtnTXpnZ1dpSWdMejQ4WjJ4NWNHZ2daMng1Y0dndGJtRnRaVDBpZFhObGNpMXpkR0YwZFhNdGFXNTJhWE5wWW14bElpQjFibWxqYjJSbFBTSW1JM2hsWVRFeE95SWdaRDBpVFRJMU1EQWdOVEF3TUNCeExUUXdOaUF3SUMwM09EZ2dMVEV5T0NCeExUTTNNQ0F0TVRJMElDMDJPRFlnTFRNMU5pQnhMVE14TXlBdE1qSTVJQzAxTkRJZ0xUVTBNaUJ4TFRJek1pQXRNekUySUMwek5UWWdMVFk0TmlCeExURXlPQ0F0TXpneUlDMHhNamdnTFRjNE9DQnhNQ0F0TkRBMklERXlPQ0F0TnpnNElIRXhNalFnTFRNM01DQXpOVFlnTFRZNE5pQnhNakk1SUMwek1UTWdOVFF5SUMwMU5ESWdjVE14TmlBdE1qTXlJRFk0TmlBdE16VTJJSEV6T0RJZ0xURXlPQ0EzT0RnZ0xURXlPQ0J4TkRBMklEQWdOemc0SURFeU9DQnhNemN3SURFeU5DQTJPRFlnTXpVMklIRXpNVE1nTWpJNUlEVTBNaUExTkRJZ2NUSXpNaUF6TVRZZ016VTJJRFk0TmlCeE1USTRJRE00TWlBeE1qZ2dOemc0SUhFd0lEUXdOaUF0TVRJNElEYzRPQ0J4TFRFeU5DQXpOekFnTFRNMU5pQTJPRFlnY1MweU1qa2dNekV6SUMwMU5ESWdOVFF5SUhFdE16RTJJREl6TWlBdE5qZzJJRE0xTmlCeExUTTRNaUF4TWpnZ0xUYzRPQ0F4TWpnZ1drMHlOVEF3SURRd01EQWdjVE14TVNBd0lEVTVNQ0F0TVRFMklIRXlOekVnTFRFeE1pQTBOell1TlNBdE16RTNMalVnY1RJd05TNDFJQzB5TURVdU5TQXpNVGN1TlNBdE5EYzJMalVnY1RFeE5pQXRNamM1SURFeE5pQXROVGt3SUhFd0lDMHpNVEVnTFRFeE5pQXROVGt3SUhFdE1URXlJQzB5TnpFZ0xUTXhOeTQxSUMwME56WXVOU0J4TFRJd05TNDFJQzB5TURVdU5TQXRORGMyTGpVZ0xUTXhOeTQxSUhFdE1qYzVJQzB4TVRZZ0xUVTVNQ0F0TVRFMklIRXRNekV4SURBZ0xUVTVNQ0F4TVRZZ2NTMHlOekVnTVRFeUlDMDBOell1TlNBek1UY3VOU0J4TFRJd05TNDFJREl3TlM0MUlDMHpNVGN1TlNBME56WXVOU0J4TFRFeE5pQXlOemtnTFRFeE5pQTFPVEFnY1RBZ016RXhJREV4TmlBMU9UQWdjVEV4TWlBeU56RWdNekUzTGpVZ05EYzJMalVnY1RJd05TNDFJREl3TlM0MUlEUTNOaTQxSURNeE55NDFJSEV5TnprZ01URTJJRFU1TUNBeE1UWWdXaUlnTHo0OFoyeDVjR2dnWjJ4NWNHZ3RibUZ0WlQwaWRYTmxjaTF6ZEdGMGRYTXRiMjVzYVc1bElpQjFibWxqYjJSbFBTSW1JM2hsWVRFeU95SWdaRDBpVFRFMU1EQWdNVFV3TUNCc01qQXdNQ0F3SUd3d0lESXdNREFnYkMweU1EQXdJREFnYkRBZ0xUSXdNREFnV2sweU5UQXdJRFV3TURBZ2NTMDBNRFlnTUNBdE56ZzRJQzB4TWpnZ2NTMHpOekFnTFRFeU5DQXROamcySUMwek5UWWdjUzB6TVRNZ0xUSXlPU0F0TlRReUlDMDFORElnY1MweU16SWdMVE14TmlBdE16VTJJQzAyT0RZZ2NTMHhNamdnTFRNNE1pQXRNVEk0SUMwM09EZ2djVEFnTFRRd05pQXhNamdnTFRjNE9DQnhNVEkwSUMwek56QWdNelUySUMwMk9EWWdjVEl5T1NBdE16RXpJRFUwTWlBdE5UUXlJSEV6TVRZZ0xUSXpNaUEyT0RZZ0xUTTFOaUJ4TXpneUlDMHhNamdnTnpnNElDMHhNamdnY1RRd05pQXdJRGM0T0NBeE1qZ2djVE0zTUNBeE1qUWdOamcySURNMU5pQnhNekV6SURJeU9TQTFORElnTlRReUlIRXlNeklnTXpFMklETTFOaUEyT0RZZ2NURXlPQ0F6T0RJZ01USTRJRGM0T0NCeE1DQTBNRFlnTFRFeU9DQTNPRGdnY1MweE1qUWdNemN3SUMwek5UWWdOamcySUhFdE1qSTVJRE14TXlBdE5UUXlJRFUwTWlCeExUTXhOaUF5TXpJZ0xUWTROaUF6TlRZZ2NTMHpPRElnTVRJNElDMDNPRGdnTVRJNElGb2lJQzgrUEM5bWIyNTBQand2WkdWbWN6NDhMM04yWno0PVwiIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmZvbnQvdHRmO2Jhc2U2NCxBQUVBQUFBS0FJQUFBd0FnVDFNdk1uVGpqOUVBQUFDc0FBQUFZR050WVhBQURldTRBQUFCREFBQUFVSm5iSGxteDBjNVRBQUFBbEFBQUFmOGFHVmhaQ3ZyRi9jQUFBcE1BQUFBTm1ob1pXRW0vUk9GQUFBS2hBQUFBQ1JvYlhSNFo3Ny8vd0FBQ3FnQUFBQTBiRzlqWVEyOEQyWUFBQXJjQUFBQUtHMWhlSEFCSUFCWEFBQUxCQUFBQUNCdVlXMWxiY1Q1VkFBQUN5UUFBQUttY0c5emREOVV2dGNBQUEzTUFBQUJGZ0FFRXNvQmtBQUZBQUFNWlEyc0FBQUN2QXhsRGF3QUFBbGdBUFVGQ2dBQUFnQUZBd0FBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFCUVprVmtBRURxQWVvU0U0Z0FBQUhDRTRnQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQU1BQUFBREFBQUFIQUFCQUFBQUFBQThBQU1BQVFBQUFCd0FCQUFnQUFBQUJBQUVBQUVBQU9vUy8vOEFBT29CLy84V0FBQUJBQUFBQUFBQUFRWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUE2bUQwTUFCUUFMQUFBSkFoRUpCQkVKQVE2bStvSUZmdnU2QkViNmd2cUNCWDc3dWdSR0QwTDZndnFDQVRnRVJnUkdBVGo2Z3ZxQ0FUZ0VSZ1JHQUFFQUFBQUFEVzRTVUFBRkFBQUpBUkVKQVJFR0d3ZFQ5M1FJakFuRStLMyt5QWlMQ0l6K3h3QUNBQUFBQUEvZkQwTUFCUUFMQUFBSkFoRUpCQkVKQVFUaUJYNzZnZ1JHKzdvRmZnVi8rb0VFUnZ1NkJFWUZmZ1YrL3NqN3V2dTYvc2dGZmdWKy9zajd1dnU2QUFFQUFBQUFEcVlTVUFBRkFBQUpBUkVKQVJFTmJ2aXRDSXYzZFFuRUIxTUJPZmQwOTNVQk9BQUJBQUFBQUFZM0U0Z0FCUUFBRXdjSkFSY0JsSlFGY3ZxT2xBV2pFNGhWOXBIMmtWVUp4QUFBQVFBQUFBQVJodytEQUFVQUFBa0ZEODMzOC92Ny9rWUZ2d25IRDRQMzh3UUYva2Y2UVFuR0FBRUFBQUFBRVJjUkZ3QUxBQUFKQ3hFWC9lMzZ3UHJBL2UwRlFQckFBaE1GUUFWQUFoUDZ3QVNFL2UwRlFQckFBaE1GUUFWQUFoUDZ3QVZBL2UzNndBQUIvLzhBQUJPVEV1d0FNd0FBQVNJSERnRVhGaGNCSVNZSEJnY0dCd1lVRnhZWEZoY1dOeUVCQmdjR0Z4WVhIZ0VYRmhjV056WTNBVFkzTmljbUp3RXVBUXBnWlU5S1JoQVNTQVhYOGVCTlBqb3BKeFFVRkJRbktUbytUUTRnK2lrM0doZ0RBeHNaVmpVM096NDZQelVIN1RzVkZSUVZQUGdUTEhRUzdEazByRmxnUi9vcUFSc1lMaXc1T0hnNE9Td3VHQnNDK2lrMVB6cytPamMyVmhrYUF3TVlHVGdIN0R4UlVFOVNQQWZzTFRJQUFBQUNBQUFBQUE2bUVsQUFHQUJHQUFBQklnY09BUWNHRkJjZUFSY1dNamMrQVRjMk5DY3VBU2NtQVNJSEJnY0dGQmNXRnhZeklSRWhJZ2NHQndZVUZ4WVhGamNoTWpjMk56WTBKeVluSmlNaEVUUW5KaWNtSXdsMmIyWmltQ2tyS3ltWVltYmVabUtYS2lzcktwZGladncyVmtoSEtTc3JLVWRJVmdKeC9ZOVdTRWNwS3lzcFIwaFdCMU5WU0VjcEt5c3BSMGhWL1k4cktVZEpWUkpRS3lxWFkyWGZaV0tZS1NzcktaaGlaZDlsWTVjcUsvbmxLeWxIU0t0SVJ5a3IrZVlyS1VkSnFrbEhLU3NCS2lsSFNhcEpSeWtyQjFOVlNFY3BLd0FBQXdBQUFBQVJGeEVYQUFNQUJ3QUxBQUFCRVNFUkFSRWhFUUVSSVJFQ2NRNm04Vm9PcHZGYURxWVJGLzJQQW5INTV2MlBBbkg1NWYyUEFuRUFBd0FBQUFBU25ndm5BQmdBTVFCS0FBQUJNaGNlQVJjV0ZBY09BUWNHSWljdUFTY21ORGMrQVRjMklUSVhIZ0VYRmhRSERnRUhCaUluTGdFbkpqUTNQZ0UzTmlFeUZ4NEJGeFlVQnc0QkJ3WWlKeTRCSnlZME56NEJOellERFhCbFlwZ3BLeXNwbUdKbDMyWmlseW9yS3lxWFltWUhKbTltWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1ZSEptOW1ZcGNxS3lzcWwySm0zMlZpbUNrckt5bVlZbVVMNXlzcWwySm0zbVppbHlvckt5cVhZbWJlWm1LWEtpc3JLcGRpWnQ1bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltYmVabUtYS2lzcktwZGladDVtWXBjcUt3QUFBQUFDQUFBQUFBL2ZEOThBQXdBSEFBQUJFU0VSSVJFaEVRT3FCT0lDY1FUaUQ5L3p5d3cxODhzTU5RQUFBQUVBQUFBQUVSY1JGd0FDQUFBSkFnSnhEcWJ4V2hFWCtLMzRyUUFCQUFBQUFBNm1ERFVBQWdBQUNRSUU0Z1RpQk9JTU5mc2VCT0FBQWYvZ0FBQVRhUk5wQURFQUFBRUVCUVFGQkFNQ0F3SVJFQk1TRXhJRkJBVUVJU0FsSkNVa0V4SVRFaE1HQUFVRUlTQWxKQ2NtSnlZREFoRVFFeElBQ0d6K21QNngvcnIrN2Y3dXhzcHJib0I3NmVVQk9RRThBWElCZmdHV0FYRUJZUUZXQVM0Qkt1dnNtWnc0dlA0cC92bis4LzdxL3I3K3p2N1ovZnU0dTJOblVFNEJKeE5wTHBlVDZlZisxLzdUL3F2K24vNlAvbXIrZ3Y2Ty9zVCt4K1hvZklCcmFNWENBUTBCRGdGREFVc0JhY3orMms1UVoyTzd1UHY5QVNjQk1nRkNBU1VCRXdFTkFjc0FBZ0FBQUFBVGlCT0lBQ1FBUUFBQUFTQUZCQVVFQXdJREFoQVRFaE1TQlFRRkJDQWxKQ1VrRXhJVEVoQURBZ01DSlNRbEpBRWhNaGNlQVJjV0ZBY09BUWNHSXlFaUp5NEJKeVkwTno0Qk56WUp4UDVxL29MK2p2N0Uvc2ZsNkh5QWdIem81UUU1QVR3QmNnRitBeXdCZmdGeUFUd0JPZVhvZklDQWZPamwvc2YreFA2Ty9vTDZ3UWRUVzFkVWhDUW1KaVNFVkZkYitLMWNWMVNFSkNZbUpJUlVWeE9JZ0h6bzVmN0gvc1QranY2Qy9OVCtndjZPL3NUK3grWG9mSUNBZk9qbEFUa0JQQUZ5QVg0RExBRitBWElCUEFFNTVlaDhnUGdSSmlXRVUxZTRWMU9FSlNZbUpZUlRWN2hYVTRRbEpnQUFBQUlBQUFBQUU0Z1RpQUFrQUQwQUFBRWdCUVFGQkFNQ0F3SVFFeElURWdVRUJRUWdKU1FsSkJNU0V4SVFBd0lEQWlVa0pTUUJJQVVFQUJNU0VBTUNBQVVFSUNVa0FBTUNFQk1TQUNVa0NjVCthdjZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBZ0h6bzVmN0gvc1QranY2Qy9tb0JOd0VYQVE4Qm0zQjBkSEQrWmY3eC91bjlrdjdwL3ZIK1pYQjBkSEFCbXdFUEFSY1RpSUI4Nk9YK3gvN0UvbzcrZ3Z6VS9vTCtqdjdFL3NmbDZIeUFnSHpvNVFFNUFUd0JjZ0YrQXl3QmZnRnlBVHdCT2VYb2ZJRDhHSFJ3L21YKzhmN3AvWkwrNmY3eC9tVndkSFJ3QVpzQkR3RVhBbTRCRndFUEFadHdkQUFBQUFJQUFBQUFFNGdUaUFBREFDZ0FBQUVoRVNFQklBVUVCUVFEQWdNQ0VCTVNFeElGQkFVRUlDVWtKU1FURWhNU0VBTUNBd0lsSkNVa0Jkd0gwUGd3QStqK2F2NkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUFnSHpvNWY3SC9zVCtqdjZDQmR3SDBBWGNnSHpvNWY3SC9zVCtqdjZDL05UK2d2Nk8vc1QreCtYb2ZJQ0FmT2psQVRrQlBBRnlBWDRETEFGK0FYSUJQQUU1NWVoOGdBQUFBUUFBQUFFQUFEL3MvRHRmRHp6MUFBc1RpQUFBQUFEYzFVZjFBQUFBQU55RWEvWC80QUFBRTVNVGlBQUFBQWdBQWdBQUFBQUFBQUFCQUFBVGlBQUFBQUFUaVAvZy8vVVRrd0FCQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0FBQUFBVGlBQUFFNGdBQUJPSUFBQVRpQUFBQmpZQUFCT0lBQUFBQVAvL0FBQUFBQUFBQUFBQUFBQUEvK0FBQUFBQUFBQUFBQUFBQUNJQU5nQllBR3dBZ0FDVUFMUUJEZ0Y4QVpvQ0VBSW1BalFDUWdLb0F5SURwZ1ArQUFFQUFBQVRBRXNBQXdBQUFBQUFBZ0FBQUFvQUNnQUFBUDhBQUFBQUFBQUFBQUFRQU1ZQUFRQUFBQUFBQVFBVUFBQUFBUUFBQUFBQUFnQUhBQlFBQVFBQUFBQUFBd0FVQUJzQUFRQUFBQUFBQkFBVUFDOEFBUUFBQUFBQUJRQUxBRU1BQVFBQUFBQUFCZ0FVQUU0QUFRQUFBQUFBQ2dBckFHSUFBUUFBQUFBQUN3QVRBSTBBQXdBQkJBa0FBUUFvQUtBQUF3QUJCQWtBQWdBT0FNZ0FBd0FCQkFrQUF3QW9BTllBQXdBQkJBa0FCQUFvQVA0QUF3QUJCQWtBQlFBV0FTWUFBd0FCQkFrQUJnQW9BVHdBQXdBQkJBa0FDZ0JXQVdRQUF3QUJCQWtBQ3dBbUFicHBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhabEpsWjNWc1lYSnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhabWxqYjI1bWIyNTBMWFoxWlMwNE5HTTBOakZtVm1WeWMybHZiaUF4TGpCcFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFprZGxibVZ5WVhSbFpDQmllU0J6ZG1jeWRIUm1JR1p5YjIwZ1JtOXVkR1ZzYkc4Z2NISnZhbVZqZEM1b2RIUndPaTh2Wm05dWRHVnNiRzh1WTI5dEFHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JTQUdVQVp3QjFBR3dBWVFCeUFHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCSEFHVUFiZ0JsQUhJQVlRQjBBR1VBWkFBZ0FHSUFlUUFnQUhNQWRnQm5BRElBZEFCMEFHWUFJQUJtQUhJQWJ3QnRBQ0FBUmdCdkFHNEFkQUJsQUd3QWJBQnZBQ0FBY0FCeUFHOEFhZ0JsQUdNQWRBQXVBR2dBZEFCMEFIQUFPZ0F2QUM4QVpnQnZBRzRBZEFCbEFHd0FiQUJ2QUM0QVl3QnZBRzBBQUFBQ0FBQUFBQUFBQURJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRBQk1BQUFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXhGaGNuSnZkeTFzWldaMExXUnZkV0pzWlFwaGNuSnZkeTFzWldaMEVtRnljbTkzTFhKcFoyaDBMV1J2ZFdKc1pRdGhjbkp2ZHkxeWFXZG9kQXBpY21WaFpHTnlkVzFpQ1dOb1pXTnJiV0Z5YXdWamJHOXpaUWRqYjI1bWFYSnRCR2x1Wm04RWJXVnVkUVJ0YjNKbEJYQmhkWE5sQkhCc1lYa0tkSEpwWVc1bmJHVXRjeEIxYzJWeUxYTjBZWFIxY3kxaGQyRjVEM1Z6WlhJdGMzUmhkSFZ6TFdSdVpCVjFjMlZ5TFhOMFlYUjFjeTFwYm5acGMybGliR1VTZFhObGNpMXpkR0YwZFhNdGIyNXNhVzVsQUFBPVwiIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmZvbnQvd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUE4c0FBb0FBQUFBRHVRQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJQVXk4eUFBQUE5QUFBQUdBQUFBQmdkT09QMFdOdFlYQUFBQUZVQUFBQlFnQUFBVUlBRGV1NFoyeDVaZ0FBQXBnQUFBZjhBQUFIL01kSE9VeG9aV0ZrQUFBS2xBQUFBRFlBQUFBMksrc1g5MmhvWldFQUFBck1BQUFBSkFBQUFDUW0vUk9GYUcxMGVBQUFDdkFBQUFBMEFBQUFOR2UrLy85c2IyTmhBQUFMSkFBQUFDZ0FBQUFvRGJ3UFptMWhlSEFBQUF0TUFBQUFJQUFBQUNBQklBQlhibUZ0WlFBQUMyd0FBQUttQUFBQ3BtM0UrVlJ3YjNOMEFBQU9GQUFBQVJZQUFBRVdQMVMrMXdBRUVzb0JrQUFGQUFBTVpRMnNBQUFDdkF4bERhd0FBQWxnQVBVRkNnQUFBZ0FGQXdBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQlFaa1ZrQUVEcUFlb1NFNGdBQUFIQ0U0Z0FBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFNQUFBQURBQUFBSEFBQkFBQUFBQUE4QUFNQUFRQUFBQndBQkFBZ0FBQUFCQUFFQUFFQUFPb1MvLzhBQU9vQi8vOFdBQUFCQUFBQUFBQUFBUVlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBNm1EME1BQlFBTEFBQUpBaEVKQkJFSkFRNm0rb0lGZnZ1NkJFYjZndnFDQlg3N3VnUkdEMEw2Z3ZxQ0FUZ0VSZ1JHQVRqNmd2cUNBVGdFUmdSR0FBRUFBQUFBRFc0U1VBQUZBQUFKQVJFSkFSRUdHd2RUOTNRSWpBbkUrSzMreUFpTENJeit4d0FDQUFBQUFBL2ZEME1BQlFBTEFBQUpBaEVKQkJFSkFRVGlCWDc2Z2dSRys3b0ZmZ1YvK29FRVJ2dTZCRVlGZmdWKy9zajd1dnU2L3NnRmZnVisvc2o3dXZ1NkFBRUFBQUFBRHFZU1VBQUZBQUFKQVJFSkFSRU5idml0Q0l2M2RRbkVCMU1CT2ZkMDkzVUJPQUFCQUFBQUFBWTNFNGdBQlFBQUV3Y0pBUmNCbEpRRmN2cU9sQVdqRTRoVjlwSDJrVlVKeEFBQUFRQUFBQUFSaHcrREFBVUFBQWtGRDgzMzgvdjcva1lGdnduSEQ0UDM4d1FGL2tmNlFRbkdBQUVBQUFBQUVSY1JGd0FMQUFBSkN4RVgvZTM2d1ByQS9lMEZRUHJBQWhNRlFBVkFBaFA2d0FTRS9lMEZRUHJBQWhNRlFBVkFBaFA2d0FWQS9lMzZ3QUFCLy84QUFCT1RFdXdBTXdBQUFTSUhEZ0VYRmhjQklTWUhCZ2NHQndZVUZ4WVhGaGNXTnlFQkJnY0dGeFlYSGdFWEZoY1dOelkzQVRZM05pY21Kd0V1QVFwZ1pVOUtSaEFTU0FYWDhlQk5Qam9wSnhRVUZCUW5LVG8rVFE0ZytpazNHaGdEQXhzWlZqVTNPejQ2UHpVSDdUc1ZGUlFWUFBnVExIUVM3RGswckZsZ1Ivb3FBUnNZTGl3NU9IZzRPU3d1R0JzQytpazFQenMrT2pjMlZoa2FBd01ZR1RnSDdEeFJVRTlTUEFmc0xUSUFBQUFDQUFBQUFBNm1FbEFBR0FCR0FBQUJJZ2NPQVFjR0ZCY2VBUmNXTWpjK0FUYzJOQ2N1QVNjbUFTSUhCZ2NHRkJjV0Z4WXpJUkVoSWdjR0J3WVVGeFlYRmpjaE1qYzJOelkwSnlZbkppTWhFVFFuSmljbUl3bDJiMlppbUNrckt5bVlZbWJlWm1LWEtpc3JLcGRpWnZ3MlZraEhLU3NyS1VkSVZnSngvWTlXU0VjcEt5c3BSMGhXQjFOVlNFY3BLeXNwUjBoVi9ZOHJLVWRKVlJKUUt5cVhZMlhmWldLWUtTc3JLWmhpWmQ5bFk1Y3FLL25sS3lsSFNLdElSeWtyK2VZcktVZEpxa2xIS1NzQktpbEhTYXBKUnlrckIxTlZTRWNwS3dBQUF3QUFBQUFSRnhFWEFBTUFCd0FMQUFBQkVTRVJBUkVoRVFFUklSRUNjUTZtOFZvT3B2RmFEcVlSRi8yUEFuSDU1djJQQW5INTVmMlBBbkVBQXdBQUFBQVNuZ3ZuQUJnQU1RQktBQUFCTWhjZUFSY1dGQWNPQVFjR0lpY3VBU2NtTkRjK0FUYzJJVElYSGdFWEZoUUhEZ0VIQmlJbkxnRW5KalEzUGdFM05pRXlGeDRCRnhZVUJ3NEJCd1lpSnk0Qkp5WTBOejRCTnpZRERYQmxZcGdwS3lzcG1HSmwzMlppbHlvckt5cVhZbVlISm05bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltWUhKbTltWXBjcUt5c3FsMkptMzJWaW1Da3JLeW1ZWW1VTDV5c3FsMkptM21aaWx5b3JLeXFYWW1iZVptS1hLaXNyS3BkaVp0NW1ZcGNxS3lzcWwySm0zbVppbHlvckt5cVhZbWJlWm1LWEtpc3JLcGRpWnQ1bVlwY3FLd0FBQUFBQ0FBQUFBQS9mRDk4QUF3QUhBQUFCRVNFUklSRWhFUU9xQk9JQ2NRVGlEOS96eXd3MTg4c01OUUFBQUFFQUFBQUFFUmNSRndBQ0FBQUpBZ0p4RHFieFdoRVgrSzM0clFBQkFBQUFBQTZtRERVQUFnQUFDUUlFNGdUaUJPSU1OZnNlQk9BQUFmL2dBQUFUYVJOcEFERUFBQUVFQlFRRkJBTUNBd0lSRUJNU0V4SUZCQVVFSVNBbEpDVWtFeElURWhNR0FBVUVJU0FsSkNjbUp5WURBaEVRRXhJQUNHeittUDZ4L3JyKzdmN3V4c3ByYm9CNzZlVUJPUUU4QVhJQmZnR1dBWEVCWVFGV0FTNEJLdXZzbVp3NHZQNHAvdm4rOC83cS9yNyt6djdaL2Z1NHUyTm5VRTRCSnhOcExwZVQ2ZWYrMS83VC9xdituLzZQL21yK2d2Nk8vc1QreCtYb2ZJQnJhTVhDQVEwQkRnRkRBVXNCYWN6KzJrNVFaMk83dVB2OUFTY0JNZ0ZDQVNVQkV3RU5BY3NBQWdBQUFBQVRpQk9JQUNRQVFBQUFBU0FGQkFVRUF3SURBaEFURWhNU0JRUUZCQ0FsSkNVa0V4SVRFaEFEQWdNQ0pTUWxKQUVoTWhjZUFSY1dGQWNPQVFjR0l5RWlKeTRCSnlZME56NEJOellKeFA1cS9vTCtqdjdFL3NmbDZIeUFnSHpvNVFFNUFUd0JjZ0YrQXl3QmZnRnlBVHdCT2VYb2ZJQ0FmT2psL3NmK3hQNk8vb0w2d1FkVFcxZFVoQ1FtSmlTRVZGZGIrSzFjVjFTRUpDWW1KSVJVVnhPSWdIem81ZjdIL3NUK2p2NkMvTlQrZ3Y2Ty9zVCt4K1hvZklDQWZPamxBVGtCUEFGeUFYNERMQUYrQVhJQlBBRTU1ZWg4Z1BnUkppV0VVMWU0VjFPRUpTWW1KWVJUVjdoWFU0UWxKZ0FBQUFJQUFBQUFFNGdUaUFBa0FEMEFBQUVnQlFRRkJBTUNBd0lRRXhJVEVnVUVCUVFnSlNRbEpCTVNFeElRQXdJREFpVWtKU1FCSUFVRUFCTVNFQU1DQUFVRUlDVWtBQU1DRUJNU0FDVWtDY1QrYXY2Qy9vNyt4UDdINWVoOGdJQjg2T1VCT1FFOEFYSUJmZ01zQVg0QmNnRThBVG5sNkh5QWdIem81ZjdIL3NUK2p2NkMvbW9CTndFWEFROEJtM0IwZEhEK1pmN3gvdW45a3Y3cC92SCtaWEIwZEhBQm13RVBBUmNUaUlCODZPWCt4LzdFL283K2d2elUvb0wranY3RS9zZmw2SHlBZ0h6bzVRRTVBVHdCY2dGK0F5d0JmZ0Z5QVR3Qk9lWG9mSUQ4R0hSdy9tWCs4ZjdwL1pMKzZmN3gvbVZ3ZEhSd0Fac0JEd0VYQW00QkZ3RVBBWnR3ZEFBQUFBSUFBQUFBRTRnVGlBQURBQ2dBQUFFaEVTRUJJQVVFQlFRREFnTUNFQk1TRXhJRkJBVUVJQ1VrSlNRVEVoTVNFQU1DQXdJbEpDVWtCZHdIMFBnd0EraithdjZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBZ0h6bzVmN0gvc1QranY2Q0Jkd0gwQVhjZ0h6bzVmN0gvc1QranY2Qy9OVCtndjZPL3NUK3grWG9mSUNBZk9qbEFUa0JQQUZ5QVg0RExBRitBWElCUEFFNTVlaDhnQUFBQVFBQUFBRUFBRC9zL0R0ZkR6ejFBQXNUaUFBQUFBRGMxVWYxQUFBQUFOeUVhL1gvNEFBQUU1TVRpQUFBQUFnQUFnQUFBQUFBQUFBQkFBQVRpQUFBQUFBVGlQL2cvL1VUa3dBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQndBQUFBQVRpQUFBRTRnQUFCT0lBQUFUaUFBQUJqWUFBQk9JQUFBQUFQLy9BQUFBQUFBQUFBQUFBQUFBLytBQUFBQUFBQUFBQUFBQUFDSUFOZ0JZQUd3QWdBQ1VBTFFCRGdGOEFab0NFQUltQWpRQ1FnS29BeUlEcGdQK0FBRUFBQUFUQUVzQUF3QUFBQUFBQWdBQUFBb0FDZ0FBQVA4QUFBQUFBQUFBQUFBUUFNWUFBUUFBQUFBQUFRQVVBQUFBQVFBQUFBQUFBZ0FIQUJRQUFRQUFBQUFBQXdBVUFCc0FBUUFBQUFBQUJBQVVBQzhBQVFBQUFBQUFCUUFMQUVNQUFRQUFBQUFBQmdBVUFFNEFBUUFBQUFBQUNnQXJBR0lBQVFBQUFBQUFDd0FUQUkwQUF3QUJCQWtBQVFBb0FLQUFBd0FCQkFrQUFnQU9BTWdBQXdBQkJBa0FBd0FvQU5ZQUF3QUJCQWtBQkFBb0FQNEFBd0FCQkFrQUJRQVdBU1lBQXdBQkJBa0FCZ0FvQVR3QUF3QUJCQWtBQ2dCV0FXUUFBd0FCQkFrQUN3QW1BYnBwWTI5dVptOXVkQzEyZFdVdE9EUmpORFl4WmxKbFozVnNZWEpwWTI5dVptOXVkQzEyZFdVdE9EUmpORFl4Wm1samIyNW1iMjUwTFhaMVpTMDROR00wTmpGbVZtVnljMmx2YmlBeExqQnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhaa2RsYm1WeVlYUmxaQ0JpZVNCemRtY3lkSFJtSUdaeWIyMGdSbTl1ZEdWc2JHOGdjSEp2YW1WamRDNW9kSFJ3T2k4dlptOXVkR1ZzYkc4dVkyOXRBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCU0FHVUFad0IxQUd3QVlRQnlBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCcEFHTUFid0J1QUdZQWJ3QnVBSFFBTFFCMkFIVUFaUUF0QURnQU5BQmpBRFFBTmdBeEFHWUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FERUFMZ0F3QUdrQVl3QnZBRzRBWmdCdkFHNEFkQUF0QUhZQWRRQmxBQzBBT0FBMEFHTUFOQUEyQURFQVpnQkhBR1VBYmdCbEFISUFZUUIwQUdVQVpBQWdBR0lBZVFBZ0FITUFkZ0JuQURJQWRBQjBBR1lBSUFCbUFISUFid0J0QUNBQVJnQnZBRzRBZEFCbEFHd0FiQUJ2QUNBQWNBQnlBRzhBYWdCbEFHTUFkQUF1QUdnQWRBQjBBSEFBT2dBdkFDOEFaZ0J2QUc0QWRBQmxBR3dBYkFCdkFDNEFZd0J2QUcwQUFBQUNBQUFBQUFBQUFESUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUJNQUFBRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV4Rmhjbkp2ZHkxc1pXWjBMV1J2ZFdKc1pRcGhjbkp2ZHkxc1pXWjBFbUZ5Y205M0xYSnBaMmgwTFdSdmRXSnNaUXRoY25KdmR5MXlhV2RvZEFwaWNtVmhaR055ZFcxaUNXTm9aV05yYldGeWF3VmpiRzl6WlFkamIyNW1hWEp0QkdsdVptOEViV1Z1ZFFSdGIzSmxCWEJoZFhObEJIQnNZWGtLZEhKcFlXNW5iR1V0Y3hCMWMyVnlMWE4wWVhSMWN5MWhkMkY1RDNWelpYSXRjM1JoZEhWekxXUnVaQlYxYzJWeUxYTjBZWFIxY3kxcGJuWnBjMmxpYkdVU2RYTmxjaTF6ZEdGMGRYTXRiMjVzYVc1bEFBQT1cIiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgeyBJc01vYmlsZVN0YXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvSXNNb2JpbGVTdGF0ZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRpc01vYmlsZTogZmFsc2UsXG5cdFx0fVxuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdElzTW9iaWxlU3RhdGUuJG9uKCdjaGFuZ2VkJywgdGhpcy5vbklzTW9iaWxlQ2hhbmdlZClcblx0XHR0aGlzLmlzTW9iaWxlID0gSXNNb2JpbGVTdGF0ZS5pc01vYmlsZVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdElzTW9iaWxlU3RhdGUuJG9mZignY2hhbmdlZCcsIHRoaXMub25Jc01vYmlsZUNoYW5nZWQpXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRvbklzTW9iaWxlQ2hhbmdlZCh2YWwpIHtcblx0XHRcdHRoaXMuaXNNb2JpbGUgPSB2YWxcblx0XHR9LFxuXHR9LFxufVxuIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBLcmlzdG9mIEhhbWFubiwgUGF1bCBTY2h3w7ZyZXJcbiAqXG4gKiBAYXV0aG9yIEtyaXN0b2YgSGFtYW5uXG4gKiBAYXV0aG9yIFBhdWwgU2Nod8O2cmVyXG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG5leHBvcnQgY29uc3QgSXNNb2JpbGVTdGF0ZSA9IG5ldyBWdWUoe1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRpc01vYmlsZTogZmFsc2UsXG5cdFx0fVxuXHR9LFxuXHR3YXRjaDoge1xuXHRcdGlzTW9iaWxlKHZhbCkge1xuXHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlZCcsIHZhbClcblx0XHR9LFxuXHR9LFxuXHRjcmVhdGVkKCkge1xuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZSlcblx0XHR0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZSgpXG5cdH0sXG5cdGJlZm9yZURlc3Ryb3koKSB7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0aGFuZGxlV2luZG93UmVzaXplKCkge1xuXHRcdFx0dGhpcy5pc01vYmlsZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA8IDEwMjRcblx0XHR9LFxuXHR9LFxufSlcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvZXZlbnQtYnVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInZ1ZVwiKTsiXSwic291cmNlUm9vdCI6IiJ9","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/AppNavigationCounter\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/AppNavigationCounter\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/AppNavigationCounter\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/components/AppNavigationCounter/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AppNavigationCounter',\n props: {\n highlighted: {\n type: Boolean,\n default: false\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true&\":\n/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true& ***!\n \\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.app-navigation-entry__counter[data-v-231d7daf] {\\n font-size: calc(var(--default-font-size) * .8);\\n overflow: hidden;\\n width: fit-content;\\n max-width: 44px;\\n text-align: center;\\n text-overflow: ellipsis;\\n line-height: 1em;\\n padding: 4px 8px;\\n border-radius: var(--border-radius-pill);\\n background-color: var(--color-background-darker);\\n}\\n.app-navigation-entry__counter--highlighted[data-v-231d7daf] {\\n padding: 4px 6px;\\n color: var(--color-primary-text);\\n background-color: var(--color-primary);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./AppNavigationCounter.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AA0CF;EACC,8CAA8C;EAC9C,gBAAgB;EAChB,kBAAkB;EAClB,eC1CoB;ED2CpB,kBAAkB;EAClB,uBAAuB;EACvB,gBAAgB;EAChB,gBAAgB;EAChB,wCAAwC;EACxC,gDAAgD;AAAA;AAEhD;IACC,gBAAgB;IAChB,gCAAgC;IAChC,sCAAsC;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-navigation-entry__counter {\\n\\tfont-size: calc(var(--default-font-size) * .8);\\n\\toverflow: hidden;\\n\\twidth: fit-content;\\n\\tmax-width: $clickable-area;\\n\\ttext-align: center;\\n\\ttext-overflow: ellipsis;\\n\\tline-height: 1em;\\n\\tpadding: 4px 8px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tbackground-color: var(--color-background-darker);\\n\\n\\t&--highlighted {\\n\\t\\tpadding: 4px 6px;\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/api.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/api.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true&\":\n/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true& ***!\n \\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_style_index_0_id_231d7daf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_style_index_0_id_231d7daf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_style_index_0_id_231d7daf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true&\":\n/*!***********************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true& ***!\n \\***********************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"app-navigation-entry__counter\",\n class: { \"app-navigation-entry__counter--highlighted\": _vm.highlighted }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue\":\n/*!**********************************************************************!*\\\n !*** ./src/components/AppNavigationCounter/AppNavigationCounter.vue ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true& */ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true&\");\n/* harmony import */ var _AppNavigationCounter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppNavigationCounter.vue?vue&type=script&lang=js& */ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _AppNavigationCounter_vue_vue_type_style_index_0_id_231d7daf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true& */ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AppNavigationCounter.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _AppNavigationCounter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"231d7daf\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _AppNavigationCounter_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppNavigationCounter/AppNavigationCounter.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*************************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=script&lang=js&\":\n/*!***********************************************************************************************!*\\\n !*** ./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=script&lang=js& ***!\n \\***********************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationCounter.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true&\":\n/*!********************************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true& ***!\n \\********************************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_style_index_0_id_231d7daf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=style&index=0&id=231d7daf&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true&\":\n/*!*****************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true& ***!\n \\*****************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationCounter/AppNavigationCounter.vue?vue&type=template&id=231d7daf&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationCounter_vue_vue_type_template_id_231d7daf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationCounter/index.js\":\n/*!******************************************************!*\\\n !*** ./src/components/AppNavigationCounter/index.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigationCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationCounter */ \"./src/components/AppNavigationCounter/AppNavigationCounter.vue\");\n/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_AppNavigationCounter__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkNvdW50ZXIvQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uQ291bnRlci9BcHBOYXZpZ2F0aW9uQ291bnRlci52dWU/NDYzYSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyL0FwcE5hdmlnYXRpb25Db3VudGVyLnZ1ZT85NDhjIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyL0FwcE5hdmlnYXRpb25Db3VudGVyLnZ1ZT9mYWIyIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uQ291bnRlci9BcHBOYXZpZ2F0aW9uQ291bnRlci52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyL0FwcE5hdmlnYXRpb25Db3VudGVyLnZ1ZT9hNDNhIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uQ291bnRlci9BcHBOYXZpZ2F0aW9uQ291bnRlci52dWU/M2Q2MCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkNvdW50ZXIvQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP2FjOTYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyL2luZGV4LmpzIl0sIm5hbWVzIjpbIkFwcE5hdmlnYXRpb25Db3VudGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25ELENBQUM7QUFDRCxPO1FDVkE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQ0E7QUFDQSw4QkFEQTtBQUdBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBO0FBRkE7QUFEQTtBQUhBLEc7Ozs7Ozs7Ozs7OztBQ2hEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDNEg7QUFDN0I7QUFDL0YsOEJBQThCLG1GQUEyQixDQUFDLHNHQUFxQztBQUMvRjtBQUNBLDhCQUE4QixRQUFTLHNCQUFzQixpakJBQWlqQixxWEFBcVgsbURBQW1ELHFCQUFxQix1QkFBdUIsb0JBQW9CLHVCQUF1Qiw0QkFBNEIscUJBQXFCLHFCQUFxQiw2Q0FBNkMscURBQXFELEdBQUcsZ0VBQWdFLHVCQUF1Qix1Q0FBdUMsNkNBQTZDLEdBQUcsU0FBUyw0SUFBNEkseUJBQXlCLE1BQU0sTUFBTSxZQUFZLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLEtBQUssTUFBTSxZQUFZLGFBQWEsYUFBYSxvREFBb0QscUJBQXFCLDhKQUE4SixtREFBbUQscUJBQXFCLHVCQUF1QiwrQkFBK0IsdUJBQXVCLDRCQUE0QixxQkFBcUIscUJBQXFCLDZDQUE2QyxxREFBcUQsc0JBQXNCLHVCQUF1Qix1Q0FBdUMsNkNBQTZDLEtBQUssR0FBRyxzakJBQXNqQixzZ0JBQXNnQixtRkFBbUYsZ0pBQWdKLG1GQUFtRiwyRUFBMkUsd0NBQXdDLHNCQUFzQixtQkFBbUIsc0lBQXNJLCtGQUErRiwyQkFBMkIscURBQXFELHFCQUFxQjtBQUN4ekk7QUFDZSxzRkFBdUIsRUFBQzs7Ozs7Ozs7Ozs7OztBQ1AxQjs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLHFCQUFxQjtBQUNqRTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxxQkFBcUIsaUJBQWlCO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IscUJBQXFCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRTs7Ozs7Ozs7Ozs7O0FDakVhOztBQUViLGlDQUFpQywySEFBMkg7O0FBRTVKLDZCQUE2QixrS0FBa0s7O0FBRS9MLGlEQUFpRCxnQkFBZ0IsZ0VBQWdFLHdEQUF3RCw2REFBNkQsc0RBQXNELGtIQUFrSDs7QUFFOVosc0NBQXNDLHVEQUF1RCx1Q0FBdUMsU0FBUyxPQUFPLGtCQUFrQixFQUFFLGFBQWE7O0FBRXJMLHdDQUF3QyxnRkFBZ0YsZUFBZSxlQUFlLGdCQUFnQixvQkFBb0IsTUFBTSwwQ0FBMEMsK0JBQStCLGFBQWEscUJBQXFCLG1DQUFtQyxFQUFFLEVBQUUsY0FBYyxXQUFXLFVBQVUsRUFBRSxVQUFVLE1BQU0saURBQWlELEVBQUUsVUFBVSxrQkFBa0IsRUFBRSxFQUFFLGFBQWE7O0FBRXZlLCtCQUErQixvQ0FBb0M7O0FBRW5FO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsRTs7Ozs7Ozs7Ozs7O0FDL0JBO0FBQUE7QUFBQTtBQUFBO0FBQStGO0FBQy9GLFlBQWtaOztBQUVsWjs7QUFFQTtBQUNBOztBQUVBLGFBQWEsMEdBQUcsQ0FBQyxvV0FBTzs7OztBQUlULG1hQUFPLGFBQWEsRTs7Ozs7Ozs7Ozs7O0FDWnRCOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsS0FBd0MsR0FBRyxzQkFBaUIsR0FBRyxTQUFJOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxxRUFBcUUscUJBQXFCLGFBQWE7O0FBRXZHOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQ7QUFDekQsR0FBRzs7QUFFSDs7O0FBR0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQiw0QkFBNEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CLDZCQUE2QjtBQUNqRDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7O0FDNVFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNmQTtBQUFBO0FBQUE7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNqR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0c7QUFDdkM7QUFDTDtBQUNzQzs7O0FBR3pHO0FBQzZGO0FBQzdGLGdCQUFnQiwyR0FBVTtBQUMxQixFQUFFLDBGQUFNO0FBQ1IsRUFBRSwyR0FBTTtBQUNSLEVBQUUsb0hBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDc0Y7QUFDdEYsV0FBVyx1R0FBTSxpQkFBaUIsdUdBQU07O0FBRXhDO0FBQ0EsSUFBSSxLQUFVLEVBQUUsWUFpQmY7QUFDRDtBQUNlLGdGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNDZjtBQUFBO0FBQUEsd0NBQTBMLENBQWdCLHdQQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7O0FDQTlNO0FBQUE7QUFBQSx3Qzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRWVBLDRIQUFmLEUiLCJmaWxlIjoiQ29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uQ291bnRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwiQ29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uQ291bnRlclwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJDb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIk5leHRjbG91ZFZ1ZVwiXSA9IHJvb3RbXCJOZXh0Y2xvdWRWdWVcIl0gfHwge30sIHJvb3RbXCJOZXh0Y2xvdWRWdWVcIl1bXCJDb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyXCJdID0gZmFjdG9yeSgpO1xufSkod2luZG93LCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25Db3VudGVyL2luZGV4LmpzXCIpO1xuIiwiPCEtLVxuIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgTWFyY28gQW1icm9zaW5pIDxtYXJjb2FtYnJvc2luaUBwbS5tZT5cbiAtXG4gLSBAYXV0aG9yIE1hcmNvIEFtYnJvc2luaSA8bWFyY29hbWJyb3NpbmlAcG0ubWU+XG4gLVxuIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAtXG4gLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gLVxuIC0tPlxuXG4gPGRvY3M+XG5cbiMjIyBOb3JtYWwgQ291bnRlclxuXG5gYGBcbjxBcHBOYXZpZ2F0aW9uQ291bnRlcj4zMTQrPC9BcHBOYXZpZ2F0aW9uQ291bnRlcj5cbmBgYFxuXG4jIyMgSGlnaGxpZ2h0ZWQgQ291bnRlciAoaS5lLiBtZW50aW9ucylcblxuYGBgXG48QXBwTmF2aWdhdGlvbkNvdW50ZXIgOmhpZ2hsaWdodGVkPVwidHJ1ZVwiPkBhZG1pbjwvQXBwTmF2aWdhdGlvbkNvdW50ZXI+XG48QXBwTmF2aWdhdGlvbkNvdW50ZXIgOmhpZ2hsaWdodGVkPVwidHJ1ZVwiPjMxNCs8L0FwcE5hdmlnYXRpb25Db3VudGVyPlxuYGBgXG5cbjwvZG9jcz5cblxuPHRlbXBsYXRlPlxuXHQ8ZGl2IDpjbGFzcz1cInsgJ2FwcC1uYXZpZ2F0aW9uLWVudHJ5X19jb3VudGVyLS1oaWdobGlnaHRlZCc6IGhpZ2hsaWdodGVkIH1cIlxuXHRcdGNsYXNzPVwiYXBwLW5hdmlnYXRpb24tZW50cnlfX2NvdW50ZXJcIj5cblx0XHQ8c2xvdCAvPlxuXHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0bmFtZTogJ0FwcE5hdmlnYXRpb25Db3VudGVyJyxcblxuXHRwcm9wczoge1xuXHRcdGhpZ2hsaWdodGVkOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblx0fSxcbn1cblxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY291bnRlciB7XG5cdGZvbnQtc2l6ZTogY2FsYyh2YXIoLS1kZWZhdWx0LWZvbnQtc2l6ZSkgKiAuOCk7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHdpZHRoOiBmaXQtY29udGVudDtcblx0bWF4LXdpZHRoOiAkY2xpY2thYmxlLWFyZWE7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdHBhZGRpbmc6IDRweCA4cHg7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtcGlsbCk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFya2VyKTtcblxuXHQmLS1oaWdobGlnaHRlZCB7XG5cdFx0cGFkZGluZzogNHB4IDZweDtcblx0XHRjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0fVxufVxuXG48L3N0eWxlPlxuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY291bnRlcltkYXRhLXYtMjMxZDdkYWZdIHtcXG4gIGZvbnQtc2l6ZTogY2FsYyh2YXIoLS1kZWZhdWx0LWZvbnQtc2l6ZSkgKiAuOCk7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xcbiAgbWF4LXdpZHRoOiA0NHB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBsaW5lLWhlaWdodDogMWVtO1xcbiAgcGFkZGluZzogNHB4IDhweDtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtcGlsbCk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhcmtlcik7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY291bnRlci0taGlnaGxpZ2h0ZWRbZGF0YS12LTIzMWQ3ZGFmXSB7XFxuICAgIHBhZGRpbmc6IDRweCA2cHg7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQTBDRjtFQUNDLDhDQUE4QztFQUM5QyxnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGVDMUNvQjtFRDJDcEIsa0JBQWtCO0VBQ2xCLHVCQUF1QjtFQUN2QixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHdDQUF3QztFQUN4QyxnREFBZ0Q7QUFBQTtBQUVoRDtJQUNDLGdCQUFnQjtJQUNoQixnQ0FBZ0M7SUFDaEMsc0NBQXNDO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY291bnRlciB7XFxuXFx0Zm9udC1zaXplOiBjYWxjKHZhcigtLWRlZmF1bHQtZm9udC1zaXplKSAqIC44KTtcXG5cXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdHdpZHRoOiBmaXQtY29udGVudDtcXG5cXHRtYXgtd2lkdGg6ICRjbGlja2FibGUtYXJlYTtcXG5cXHR0ZXh0LWFsaWduOiBjZW50ZXI7XFxuXFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuXFx0bGluZS1oZWlnaHQ6IDFlbTtcXG5cXHRwYWRkaW5nOiA0cHggOHB4O1xcblxcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtcGlsbCk7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrZXIpO1xcblxcblxcdCYtLWhpZ2hsaWdodGVkIHtcXG5cXHRcXHRwYWRkaW5nOiA0cHggNnB4O1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xcblxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcblxcdH1cXG59XFxuXFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjMxZDdkYWYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxudmFyIHN0eWxlc0luRG9tID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5Eb20ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5Eb21baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzSW5Eb20ucHVzaCh7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHZhciBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBhdHRyaWJ1dGVzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpLmNvbmNhdChvYmouY3NzLCBcIn1cIikgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jb3VudGVyXCIsXG4gICAgICBjbGFzczogeyBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jb3VudGVyLS1oaWdobGlnaHRlZFwiOiBfdm0uaGlnaGxpZ2h0ZWQgfVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAob3B0aW9ucy5mdW5jdGlvbmFsID8gdGhpcy5wYXJlbnQgOiB0aGlzKS4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290XG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb25hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0FwcE5hdmlnYXRpb25Db3VudGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMzFkN2RhZiZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BcHBOYXZpZ2F0aW9uQ291bnRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcE5hdmlnYXRpb25Db3VudGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9BcHBOYXZpZ2F0aW9uQ291bnRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yMzFkN2RhZiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjIzMWQ3ZGFmXCIsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGN1c3RvbSBibG9ja3MgKi9cbmltcG9ydCBibG9jazAgZnJvbSBcIi4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP3Z1ZSZ0eXBlPWN1c3RvbSZpbmRleD0wJmJsb2NrVHlwZT1kb2NzXCJcbmlmICh0eXBlb2YgYmxvY2swID09PSAnZnVuY3Rpb24nKSBibG9jazAoY29tcG9uZW50KVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyMzFkN2RhZicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyMzFkN2RhZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyMzFkN2RhZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzMWQ3ZGFmJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzIzMWQ3ZGFmJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uQ291bnRlci9BcHBOYXZpZ2F0aW9uQ291bnRlci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkNvdW50ZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjMxZDdkYWYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25Db3VudGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMzFkN2RhZiZzY29wZWQ9dHJ1ZSZcIiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgTWFyY28gQW1icm9zaW5pIDxtYXJjb2FtYnJvc2luaUBwbS5tZT5cbiAqXG4gKiBAYXV0aG9yIE1hcmNvIEFtYnJvc2luaSA8bWFyY29hbWJyb3NpbmlAcG0ubWU+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmltcG9ydCBBcHBOYXZpZ2F0aW9uQ291bnRlciBmcm9tICcuL0FwcE5hdmlnYXRpb25Db3VudGVyJ1xuXG5leHBvcnQgZGVmYXVsdCBBcHBOYXZpZ2F0aW9uQ291bnRlclxuIl0sInNvdXJjZVJvb3QiOiIifQ==","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/AppNavigationItem\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/AppNavigationItem\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/AppNavigationItem\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/components/AppNavigationItem/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=script&lang=js&\":\n/*!*****************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ActionButton/ActionButton.vue?vue&type=script&lang=js& ***!\n \\*****************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_actionText__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mixins/actionText */ \"./src/mixins/actionText.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/**\n * Button component to be used in Actions\n*/\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'ActionButton',\n mixins: [_mixins_actionText__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n props: {\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n /**\n * determines if the action is focusable\n * @returns {boolean} is the action focusable ?\n */\n isFocusable: function isFocusable() {\n return !this.disabled;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Actions/Actions.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \"core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ \"core-js/modules/es.object.keys.js\");\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"core-js/modules/es.symbol.js\");\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ \"core-js/modules/es.object.get-own-property-descriptor.js\");\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ \"core-js/modules/es.object.get-own-property-descriptors.js\");\n/* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"core-js/modules/es.symbol.description.js\");\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ \"core-js/modules/es.symbol.iterator.js\");\n/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"core-js/modules/es.array.iterator.js\");\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"core-js/modules/es.string.iterator.js\");\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ \"core-js/modules/es.array.from.js\");\n/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ \"core-js/modules/es.array.slice.js\");\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _directives_Tooltip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../directives/Tooltip */ \"./src/directives/Tooltip/index.js\");\n/* harmony import */ var _utils_GenRandomId__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/GenRandomId */ \"./src/utils/GenRandomId.js\");\n/* harmony import */ var _utils_ValidateSlot__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/ValidateSlot */ \"./src/utils/ValidateSlot.js\");\n/* harmony import */ var _l10n__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../l10n */ \"./src/l10n.js\");\n/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../Popover */ \"./src/components/Popover/index.js\");\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n // This is the list of ALL the ALLOWED components\n// in the default SLOT\n\nvar allowedChildren = ['ActionButton', 'ActionCheckbox', 'ActionInput', 'ActionLink', 'ActionRadio', 'ActionRouter', 'ActionSeparator', 'ActionText', 'ActionTextEditable'];\nvar focusableSelector = '.focusable';\n/**\n * The Actions component can be used to display one ore more actions.\n * If only a single action is provided, it will be rendered as an inline icon.\n * For more, a menu indicator will be shown and a popovermenu containing the\n * actions will be opened on click.\n *\n * @since 0.10.0\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Actions',\n directives: {\n tooltip: _directives_Tooltip__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n },\n components: {\n Popover: _Popover__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n // Component to render the first action icon slot content (vnodes)\n VNodes: {\n functional: true,\n render: function render(h, context) {\n return context.props.vnodes;\n }\n }\n },\n props: {\n /**\n * Specify the open state of the popover menu\n */\n open: {\n type: Boolean,\n default: false\n },\n\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n\n /**\n * Specify the menu title\n */\n menuTitle: {\n type: String,\n default: null\n },\n\n /**\n * Apply primary styling for this menu\n */\n primary: {\n type: Boolean,\n default: false\n },\n\n /**\n * Icon to show for the toggle menu button\n * when more than one action is inside the actions component.\n * Only replace the default three-dot icon if really necessary.\n */\n defaultIcon: {\n type: String,\n default: 'action-item__menutoggle--default-icon'\n },\n\n /**\n * Aria label for the actions menu\n */\n ariaLabel: {\n type: String,\n default: Object(_l10n__WEBPACK_IMPORTED_MODULE_19__[\"t\"])('Actions')\n },\n\n /**\n * Wanted direction of the menu\n */\n placement: {\n type: String,\n default: 'bottom'\n },\n\n /**\n * DOM element for the actions' popover boundaries\n */\n boundariesElement: {\n type: Element,\n default: function _default() {\n return document.querySelector('body');\n }\n },\n\n /**\n * Selector for the actions' popover container\n */\n container: {\n type: String,\n default: 'body'\n },\n\n /**\n * Disabled state of the main button (single action or menu toggle)\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n actions: [],\n opened: this.open,\n focusIndex: 0,\n randomId: 'menu-' + Object(_utils_GenRandomId__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(),\n // Making children reactive!\n // By binding this here, vuejs will track the object content\n // Needed for firstAction reactivity !!!\n children: this.$children\n };\n },\n computed: {\n /**\n * Is there more than one action?\n * @returns {boolean}\n */\n hasMultipleActions: function hasMultipleActions() {\n return this.actions.length > 1;\n },\n\n /**\n * Is there any first action ?\n * And is it allowed as a standalone element ?\n * @returns {boolean}\n */\n isValidSingleAction: function isValidSingleAction() {\n return this.actions.length === 1 && this.firstActionElement !== null;\n },\n\n /**\n * First action vnode\n * @returns {Object} return the first action vue vnode\n */\n firstActionVNode: function firstActionVNode() {\n return this.actions[0];\n },\n\n /**\n * Reactive binding to the first children\n * Since we're here, it means we already passed all the proper checks\n * we can assume the first action is the first children too\n * @returns {Object} first action vue children object\n */\n firstAction: function firstAction() {\n return this.children[0] ? this.children[0] : {};\n },\n\n /**\n * Binding of the first action to the template\n * @returns {Object} vue template v-bind shortcut\n */\n firstActionBinding: function firstActionBinding() {\n if (this.firstActionVNode && this.firstActionVNode.componentOptions) {\n var tag = this.firstActionVNode.componentOptions.tag;\n\n if (tag === 'ActionLink') {\n return _objectSpread(_objectSpread({\n is: 'a',\n href: this.firstAction.href,\n target: this.firstAction.target,\n 'aria-label': this.firstAction.ariaLabel\n }, this.firstAction.$attrs), this.firstAction.$props);\n }\n\n if (tag === 'ActionRouter') {\n return _objectSpread(_objectSpread({\n is: 'router-link',\n to: this.firstAction.to,\n exact: this.firstAction.exact,\n 'aria-label': this.firstAction.ariaLabel\n }, this.firstAction.$attrs), this.firstAction.$props);\n }\n\n if (tag === 'ActionButton') {\n return _objectSpread(_objectSpread({\n is: 'button',\n 'aria-label': this.firstAction.ariaLabel\n }, this.firstAction.$attrs), this.firstAction.$props);\n }\n } // other action types are not allowed as standalone buttons\n\n\n return null;\n },\n // return the event to bind if the firstActionVNode have an action\n firstActionEvent: function firstActionEvent() {\n var _this$firstActionVNod, _this$firstActionVNod2, _this$firstActionVNod3;\n\n return (_this$firstActionVNod = this.firstActionVNode) === null || _this$firstActionVNod === void 0 ? void 0 : (_this$firstActionVNod2 = _this$firstActionVNod.componentOptions) === null || _this$firstActionVNod2 === void 0 ? void 0 : (_this$firstActionVNod3 = _this$firstActionVNod2.listeners) === null || _this$firstActionVNod3 === void 0 ? void 0 : _this$firstActionVNod3.click;\n },\n firstActionEventBinding: function firstActionEventBinding() {\n return this.firstActionEvent ? 'click' : null;\n },\n // return the first action icon slot vnodes array\n firstActionIconSlot: function firstActionIconSlot() {\n var _this$firstAction, _this$firstAction$$sl;\n\n return (_this$firstAction = this.firstAction) === null || _this$firstAction === void 0 ? void 0 : (_this$firstAction$$sl = _this$firstAction.$slots) === null || _this$firstAction$$sl === void 0 ? void 0 : _this$firstAction$$sl.icon;\n },\n firstActionClass: function firstActionClass() {\n var staticClass = this.firstActionVNode && this.firstActionVNode.data.staticClass;\n var dynClass = this.firstActionVNode && this.firstActionVNode.data.class;\n return (staticClass + ' ' + dynClass).trim();\n },\n iconSlotIsPopulated: function iconSlotIsPopulated() {\n return !!this.$slots.icon;\n }\n },\n watch: {\n // Watch parent prop\n open: function open(state) {\n if (state === this.opened) {\n return;\n }\n\n this.opened = state;\n }\n },\n beforeMount: function beforeMount() {\n // init actions\n this.initActions(); // filter invalid menu items\n\n Object(_utils_ValidateSlot__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(this.$slots.default, allowedChildren, this);\n },\n beforeUpdate: function beforeUpdate() {\n // ! since we're using $slots to manage our actions\n // ! we NEED to update the actions if anything change\n // update children & actions\n // no need to init actions again since we bound it to $children\n // and the array is now reactive\n // init actions\n this.initActions();\n Object(_utils_ValidateSlot__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(this.$slots.default, allowedChildren, this);\n },\n methods: {\n // MENU STATE MANAGEMENT\n openMenu: function openMenu(e) {\n if (this.opened) {\n return;\n }\n\n this.opened = true;\n /**\n * Event emitted when the popover menu open state is changed\n * @type {boolean}\n */\n\n this.$emit('update:open', true);\n /**\n * Event emitted when the popover menu is closed\n */\n\n this.$emit('open');\n },\n closeMenu: function closeMenu(e) {\n if (!this.opened) {\n return;\n }\n\n this.opened = false;\n /**\n * Event emitted when the popover menu open state is changed\n * @type {boolean}\n */\n\n this.$emit('update:open', false);\n /**\n * Event emitted when the popover menu is closed\n */\n\n this.$emit('close'); // close everything\n\n this.opened = false;\n this.focusIndex = 0; // focus back the menu button\n\n this.$refs.menuButton.focus();\n },\n onOpen: function onOpen(event) {\n var _this = this;\n\n this.$nextTick(function () {\n _this.focusFirstAction(event);\n });\n },\n // MENU KEYS & FOCUS MANAGEMENT\n // focus nearest focusable item on mouse move\n // DO NOT change the focus if the target is already focused\n // this will prevent issues with input being unfocused\n // on mouse move\n onMouseFocusAction: function onMouseFocusAction(event) {\n if (document.activeElement === event.target) {\n return;\n }\n\n var menuItem = event.target.closest('li');\n\n if (menuItem) {\n var focusableItem = menuItem.querySelector(focusableSelector);\n\n if (focusableItem) {\n var focusList = this.$refs.menu.querySelectorAll(focusableSelector);\n\n var focusIndex = _toConsumableArray(focusList).indexOf(focusableItem);\n\n if (focusIndex > -1) {\n this.focusIndex = focusIndex;\n this.focusAction();\n }\n }\n }\n },\n removeCurrentActive: function removeCurrentActive() {\n var currentActiveElement = this.$refs.menu.querySelector('li.active');\n\n if (currentActiveElement) {\n currentActiveElement.classList.remove('active');\n }\n },\n focusAction: function focusAction() {\n // TODO: have a global disabled state for non input elements\n var focusElement = this.$refs.menu.querySelectorAll(focusableSelector)[this.focusIndex];\n\n if (focusElement) {\n this.removeCurrentActive();\n var liMenuParent = focusElement.closest('li.action');\n focusElement.focus();\n\n if (liMenuParent) {\n liMenuParent.classList.add('active');\n }\n }\n },\n focusPreviousAction: function focusPreviousAction(event) {\n if (this.opened) {\n if (this.focusIndex === 0) {\n // First element overflows to body-navigation (no preventDefault!) and closes Actions-menu\n this.closeMenu();\n } else {\n this.preventIfEvent(event);\n this.focusIndex = this.focusIndex - 1;\n }\n\n this.focusAction();\n }\n },\n focusNextAction: function focusNextAction(event) {\n if (this.opened) {\n var indexLength = this.$refs.menu.querySelectorAll(focusableSelector).length - 1;\n\n if (this.focusIndex === indexLength) {\n // Last element overflows to body-navigation (no preventDefault!) and closes Actions-menu\n this.closeMenu();\n } else {\n this.preventIfEvent(event);\n this.focusIndex = this.focusIndex + 1;\n }\n\n this.focusAction();\n }\n },\n focusFirstAction: function focusFirstAction(event) {\n if (this.opened) {\n this.preventIfEvent(event);\n this.focusIndex = 0;\n this.focusAction();\n }\n },\n focusLastAction: function focusLastAction(event) {\n if (this.opened) {\n this.preventIfEvent(event);\n this.focusIndex = this.$el.querySelectorAll(focusableSelector).length - 1;\n this.focusAction();\n }\n },\n preventIfEvent: function preventIfEvent(event) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n // ACTIONS MANAGEMENT\n // exec the first action\n execFirstAction: function execFirstAction(event) {\n if (this.firstActionEvent) {\n this.firstActionEvent(event);\n }\n },\n initActions: function initActions() {\n // filter out invalid slots\n this.actions = (this.$slots.default || []).filter(function (node) {\n return !!node && !!node.componentOptions;\n });\n },\n onFocus: function onFocus(event) {\n this.$emit('focus', event);\n },\n onBlur: function onBlur(event) {\n this.$emit('blur', event);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=script&lang=js&\":\n/*!**************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=script&lang=js& ***!\n \\**************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AppNavigationIconCollapsible',\n props: {\n open: {\n type: Boolean,\n default: true\n }\n },\n methods: {\n onClick: function onClick(e) {\n this.$emit('click', e);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=script&lang=js&\":\n/*!***************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=script&lang=js& ***!\n \\***************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var v_click_outside__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! v-click-outside */ \"v-click-outside\");\n/* harmony import */ var v_click_outside__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(v_click_outside__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Actions_Actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Actions/Actions */ \"./src/components/Actions/Actions.vue\");\n/* harmony import */ var _ActionButton_ActionButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ActionButton/ActionButton */ \"./src/components/ActionButton/ActionButton.vue\");\n/* harmony import */ var _AppNavigationIconCollapsible__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AppNavigationIconCollapsible */ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue\");\n/* harmony import */ var _mixins_isMobile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mixins/isMobile */ \"./src/mixins/isMobile/index.js\");\n/* harmony import */ var _InputConfirmCancel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./InputConfirmCancel */ \"./src/components/AppNavigationItem/InputConfirmCancel.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AppNavigationItem',\n components: {\n Actions: _Actions_Actions__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ActionButton: _ActionButton_ActionButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n AppNavigationIconCollapsible: _AppNavigationIconCollapsible__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n InputConfirmCancel: _InputConfirmCancel__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n },\n directives: {\n ClickOutside: v_click_outside__WEBPACK_IMPORTED_MODULE_0__[\"directive\"]\n },\n mixins: [_mixins_isMobile__WEBPACK_IMPORTED_MODULE_4__[\"default\"]],\n props: {\n /**\n * The title of the element.\n */\n title: {\n type: String,\n required: true\n },\n\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: ''\n },\n\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n\n /**\n * Passing in a route will make the root element of this\n * component a `<router-link />` that points to that route.\n * By leaving this blank, the root element will be a `<li>`.\n */\n to: {\n type: [String, Object],\n default: ''\n },\n\n /**\n * Pass in `true` if you want the matching behaviour to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n\n /**\n * Makes the title of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: ''\n },\n\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: ''\n },\n\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: undefined\n },\n\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: 'bottom'\n }\n },\n data: function data() {\n return {\n editingValue: '',\n opened: this.open,\n editingActive: false\n };\n },\n computed: {\n collapsible: function collapsible() {\n return this.allowCollapse && !!this.$slots.default;\n },\n // is the icon shown?\n // we don't show it on mobile if the entry is collapsible\n // we show the collapse toggle directly!\n isIconShown: function isIconShown() {\n return !this.collapsible || this.collapsible && !this.isMobile;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren: function canHaveChildren() {\n if (this.$parent.$options._componentTag === 'AppNavigationItem') {\n return false;\n } else {\n return true;\n }\n },\n hasChildren: function hasChildren() {\n if (this.$slots.default) {\n return true;\n } else {\n return false;\n }\n },\n hasUtils: function hasUtils() {\n if (this.editing) {\n return false;\n } else if (this.$slots.actions || this.$slots.counter || this.editable || this.undo) {\n return true;\n } else {\n return false;\n }\n },\n // This is used to decide which outer element type to use\n // li or router-link\n navElement: function navElement() {\n if (this.to) {\n return {\n is: 'router-link',\n tag: 'li',\n to: this.to,\n exact: this.exact\n };\n }\n\n return {\n is: 'li'\n };\n },\n isActive: function isActive() {\n return this.to && this.$route === this.to;\n }\n },\n watch: {\n open: function open(newVal) {\n this.opened = newVal;\n }\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle: function onMenuToggle(state) {\n this.$emit('update:menuOpen', state);\n },\n // toggle the collapsible state\n toggleCollapse: function toggleCollapse() {\n this.opened = !this.opened;\n this.$emit('update:open', this.opened);\n },\n // forward click event\n onClick: function onClick(event) {\n this.$emit('click', event);\n },\n // Edition methods\n handleEdit: function handleEdit() {\n var _this = this;\n\n this.editingValue = this.title;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(function () {\n _this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing: function cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone: function handleEditingDone() {\n this.$emit('update:title', this.editingValue);\n this.editingValue = '';\n this.editingActive = false;\n },\n // Undo methods\n handleUndo: function handleUndo() {\n this.$emit('undo');\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=script&lang=js&\":\n/*!****************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=script&lang=js& ***!\n \\****************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n placeholder: {\n default: '',\n type: String\n },\n value: {\n default: '',\n type: String\n }\n },\n computed: {\n valueModel: {\n get: function get() {\n return this.value;\n },\n set: function set(newValue) {\n this.$emit('input', newValue);\n }\n }\n },\n methods: {\n confirm: function confirm() {\n this.$emit('confirm');\n },\n cancel: function cancel() {\n this.$emit('cancel');\n },\n focusInput: function focusInput() {\n this.$refs.input.focus();\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! v-tooltip */ \"v-tooltip\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(v_tooltip__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Popover',\n components: {\n VPopover: v_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VPopover\"]\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$watch(function () {\n // required because v-tooltip doesn't provide events\n // and @show is too early\n // see https://github.com/Akryum/v-tooltip/issues/661\n return _this.$refs.popover.isOpen;\n }, function (val) {\n if (val) {\n /**\n * Triggered after the tooltip was visually displayed.\n *\n * This is different from the 'show' and 'apply-show' which\n * run earlier than this where there is no guarantee that the\n * tooltip is already visible and in the DOM.\n */\n _this.$emit('after-show');\n } else {\n /**\n * Triggered after the tooltip was visually hidden.\n */\n _this.$emit('after-hide');\n }\n });\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./src/directives/Tooltip/index.scss\":\n/*!********************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./src/directives/Tooltip/index.scss ***!\n \\********************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n.vue-tooltip[data-v-84c461f] {\\n position: absolute;\\n z-index: 100000;\\n right: auto;\\n left: auto;\\n display: block;\\n margin: 0;\\n /* default to top */\\n margin-top: -3px;\\n padding: 10px 0;\\n text-align: left;\\n text-align: start;\\n opacity: 0;\\n line-height: 1.6;\\n line-break: auto;\\n filter: drop-shadow(0 1px 10px var(--color-box-shadow)); }\\n .vue-tooltip[data-v-84c461f][x-placement^='top'] .tooltip-arrow {\\n bottom: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 10px 10px 0 10px;\\n border-right-color: transparent;\\n border-bottom-color: transparent;\\n border-left-color: transparent; }\\n .vue-tooltip[data-v-84c461f][x-placement^='bottom'] .tooltip-arrow {\\n top: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 0 10px 10px 10px;\\n border-top-color: transparent;\\n border-right-color: transparent;\\n border-left-color: transparent; }\\n .vue-tooltip[data-v-84c461f][x-placement^='right'] .tooltip-arrow {\\n right: 100%;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 10px 10px 0;\\n border-top-color: transparent;\\n border-bottom-color: transparent;\\n border-left-color: transparent; }\\n .vue-tooltip[data-v-84c461f][x-placement^='left'] .tooltip-arrow {\\n left: 100%;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 0 10px 10px;\\n border-top-color: transparent;\\n border-right-color: transparent;\\n border-bottom-color: transparent; }\\n .vue-tooltip[data-v-84c461f][aria-hidden='true'] {\\n visibility: hidden;\\n transition: opacity .15s, visibility .15s;\\n opacity: 0; }\\n .vue-tooltip[data-v-84c461f][aria-hidden='false'] {\\n visibility: visible;\\n transition: opacity .15s;\\n opacity: 1; }\\n .vue-tooltip[data-v-84c461f] .tooltip-inner {\\n max-width: 350px;\\n padding: 5px 8px;\\n text-align: center;\\n color: var(--color-main-text);\\n border-radius: var(--border-radius);\\n background-color: var(--color-main-background); }\\n .vue-tooltip[data-v-84c461f] .tooltip-arrow {\\n position: absolute;\\n z-index: 1;\\n width: 0;\\n height: 0;\\n margin: 0;\\n border-style: solid;\\n border-color: var(--color-main-background); }\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./index.scss\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AApBF;;;;;;;;;;CA+BC;AAjBD;EACC,kBAAkB;EAClB,eAAe;EACf,WAAW;EACX,UAAU;EACV,cAAc;EACd,SAAS;EACT,mBAAA;EACA,gBAAgB;EAChB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,UAAU;EACV,gBAAgB;EAEhB,gBAAgB;EAChB,uDAAuD,EAAA;EAhBxD;IAqBG,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,8BA1Be;IA2Bf,+BAA+B;IAC/B,gCAAgC;IAChC,8BAA8B,EAAA;EA3BjC;IAkCG,MAAM;IACN,aAAa;IACb,gBAAgB;IAChB,8BAvCe;IAwCf,6BAA6B;IAC7B,+BAA+B;IAC/B,8BAA8B,EAAA;EAxCjC;IA+CG,WAAW;IACX,eAAe;IACf,cAAc;IACd,8BAAsD;IACtD,6BAA6B;IAC7B,gCAAgC;IAChC,8BAA8B,EAAA;EArDjC;IA4DG,UAAU;IACV,eAAe;IACf,cAAc;IACd,8BAjEe;IAkEf,6BAA6B;IAC7B,+BAA+B;IAC/B,gCAAgC,EAAA;EAlEnC;IAwEE,kBAAkB;IAClB,yCAAyC;IACzC,UAAU,EAAA;EA1EZ;IA6EE,mBAAmB;IACnB,wBAAwB;IACxB,UAAU,EAAA;EA/EZ;IAoFE,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,6BAA6B;IAC7B,mCAAmC;IACnC,8CAA8C,EAAA;EAzFhD;IA8FE,kBAAkB;IAClB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,mBAAmB;IACnB,0CAA0C,EAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n\\n$arrow-width: 10px;\\n\\n.vue-tooltip[data-v-#{$scope_version}] {\\n\\tposition: absolute;\\n\\tz-index: 100000;\\n\\tright: auto;\\n\\tleft: auto;\\n\\tdisplay: block;\\n\\tmargin: 0;\\n\\t/* default to top */\\n\\tmargin-top: -3px;\\n\\tpadding: 10px 0;\\n\\ttext-align: left;\\n\\ttext-align: start;\\n\\topacity: 0;\\n\\tline-height: 1.6;\\n\\n\\tline-break: auto;\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t// TOP\\n\\t&[x-placement^='top'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// BOTTOM\\n\\t&[x-placement^='bottom'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// RIGHT\\n\\t&[x-placement^='right'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tright: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// LEFT\\n\\t&[x-placement^='left'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tleft: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// HIDDEN / SHOWN\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity .15s, visibility .15s;\\n\\t\\topacity: 0;\\n\\t}\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity .15s;\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t// CONTENT\\n\\t.tooltip-inner {\\n\\t\\tmax-width: 350px;\\n\\t\\tpadding: 5px 8px;\\n\\t\\ttext-align: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t// ARROW\\n\\t.tooltip-arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true&\":\n/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true& ***!\n \\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n * @author Marco Ambrosini <marcoambrosini@pm.me>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\nli.active[data-v-2e929b4f] {\\n background-color: var(--color-background-hover);\\n}\\n.action--disabled[data-v-2e929b4f] {\\n pointer-events: none;\\n opacity: 0.5;\\n}\\n.action--disabled[data-v-2e929b4f]:hover, .action--disabled[data-v-2e929b4f]:focus {\\n cursor: default;\\n opacity: 0.5;\\n}\\n.action--disabled *[data-v-2e929b4f] {\\n opacity: 1 !important;\\n}\\n.action-button[data-v-2e929b4f] {\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n height: auto;\\n margin: 0;\\n padding: 0;\\n padding-right: 14px;\\n cursor: pointer;\\n white-space: nowrap;\\n opacity: 0.7;\\n color: var(--color-main-text);\\n border: 0;\\n border-radius: 0;\\n background-color: transparent;\\n box-shadow: none;\\n font-weight: normal;\\n font-size: var(--default-font-size);\\n line-height: 44px;\\n}\\n.action-button[data-v-2e929b4f]:hover, .action-button[data-v-2e929b4f]:focus {\\n opacity: 1;\\n}\\n.action-button > span[data-v-2e929b4f] {\\n cursor: pointer;\\n white-space: nowrap;\\n}\\n.action-button__icon[data-v-2e929b4f] {\\n width: 44px;\\n height: 44px;\\n opacity: 1;\\n background-position: 14px center;\\n background-size: 16px;\\n background-repeat: no-repeat;\\n}\\n.action-button .material-design-icon[data-v-2e929b4f] {\\n width: 44px;\\n height: 44px;\\n opacity: 1;\\n}\\n.action-button .material-design-icon .material-design-icon__svg[data-v-2e929b4f] {\\n vertical-align: middle;\\n}\\n.action-button p[data-v-2e929b4f] {\\n max-width: 220px;\\n line-height: 1.6em;\\n padding: 10.8px 0;\\n cursor: pointer;\\n text-align: left;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.action-button__longtext[data-v-2e929b4f] {\\n cursor: pointer;\\n white-space: pre-wrap;\\n}\\n.action-button__title[data-v-2e929b4f] {\\n font-weight: bold;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: inline-block;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./ActionButton.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../assets/action.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AErBF;;;;;;;;;;;;;;;;;;;;;EF2CE;AEnBD;EAEE,+CAA+C;AAAA;AAMjD;EACC,oBAAoB;EACpB,YDQmB;AAAA;ACVpB;IAIE,eAAe;IACf,YDKkB;AAAA;ACVpB;IAQE,qBAAqB;AAAA;AAOvB;EACC,aAAa;EACb,uBAAuB;EAEvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,mBDtB8C;ECwB9C,eAAe;EACf,mBAAmB;EAEnB,YDjBiB;ECkBjB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAEhB,mBAAmB;EACnB,mCAAmC;EACnC,iBD5CmB;AAAA;ACsBpB;IA0BE,UD7Ba;AAAA;ACGf;IA8BE,eAAe;IACf,mBAAmB;AAAA;AAGpB;IACC,WDzDkB;IC0DlB,YD1DkB;IC2DlB,UDxCa;ICyCb,gCAAwC;IACxC,qBDzDa;IC0Db,4BAA4B;AAAA;AAxC9B;IA4CE,WDlEkB;ICmElB,YDnEkB;ICoElB,UDjDa;AAAA;ACGf;MAiDG,sBAAsB;AAAA;AAjDzB;IAuDE,gBAAgB;IAChB,kBAAkB;IAGlB,iBAA8C;IAE9C,eAAe;IACf,gBAAgB;IAGhB,gBAAgB;IAChB,uBAAuB;AAAA;AAGxB;IACC,eAAe;IAEf,qBAAqB;AAAA;AAGtB;IACC,iBAAiB;IACjB,uBAAuB;IACvB,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;IACf,qBAAqB;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../assets/action';\\n@include action-active;\\n@include action--disabled;\\n@include action-item('button');\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n * @author Marco Ambrosini <marcoambrosini@pm.me>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin action-active {\\n\\tli {\\n\\t\\t&.active {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n}\\n\\n@mixin action--disabled {\\n\\t.action--disabled {\\n\\t\\tpointer-events: none;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t&:hover, &:focus {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\topacity: $opacity_disabled;\\n\\t\\t}\\n\\t\\t& * {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\\n@mixin action-item($name) {\\n\\t.action-#{$name} {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\twidth: 100%;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tpadding-right: $icon-margin;\\n\\n\\t\\tcursor: pointer;\\n\\t\\twhite-space: nowrap;\\n\\n\\t\\topacity: $opacity_normal;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\tfont-weight: normal;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: $clickable-area;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\n\\t\\t& > span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t&__icon {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\tbackground-position: $icon-margin center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\n\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\tp {\\n\\t\\t\\tmax-width: 220px;\\n\\t\\t\\tline-height: 1.6em;\\n\\n\\t\\t\\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\\n\\t\\t\\tpadding: #{($clickable-area - 1.6*14px) / 2} 0;\\n\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\ttext-align: left;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t&__longtext {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\t// allow the use of `\\\\n`\\n\\t\\t\\twhite-space: pre-wrap;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.eot */ \"./src/fonts/iconfont-vue-84c461f.eot\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.woff */ \"./src/fonts/iconfont-vue-84c461f.woff\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.ttf */ \"./src/fonts/iconfont-vue-84c461f.ttf\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.svg */ \"./src/fonts/iconfont-vue-84c461f.svg\");\n// Imports\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n@font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n /* IE9 Compat Modes */\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\");\\n /* Legacy iOS */\\n}\\n.icon[data-v-4f45864b] {\\n font-style: normal;\\n font-weight: 400;\\n}\\n.icon.arrow-left-double[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-left[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right-double[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.breadcrumb[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.checkmark[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.close[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.confirm[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.info[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.menu[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.more[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.pause[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.play[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.triangle-s[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-away[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-dnd[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-invisible[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-online[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.action-item[data-v-4f45864b] {\\n position: relative;\\n display: inline-block;\\n}\\n.action-item--single[data-v-4f45864b]:hover, .action-item--single[data-v-4f45864b]:focus, .action-item--single[data-v-4f45864b]:active, .action-item__menutoggle[data-v-4f45864b]:hover, .action-item__menutoggle[data-v-4f45864b]:focus, .action-item__menutoggle[data-v-4f45864b]:active {\\n opacity: 1;\\n background-color: rgba(127, 127, 127, 0.25);\\n}\\n.action-item__menutoggle[data-v-4f45864b]:disabled, .action-item--single[data-v-4f45864b]:disabled {\\n opacity: .3 !important;\\n}\\n.action-item.action-item--open .action-item__menutoggle[data-v-4f45864b] {\\n opacity: 1;\\n background-color: rgba(127, 127, 127, 0.25);\\n}\\n.action-item--single[data-v-4f45864b], .action-item__menutoggle[data-v-4f45864b] {\\n box-sizing: border-box;\\n width: auto;\\n min-width: 44px;\\n height: 44px;\\n margin: 0;\\n padding: 14px;\\n cursor: pointer;\\n border: none;\\n border-radius: 22px;\\n background-color: transparent;\\n}\\n.action-item__menutoggle[data-v-4f45864b] {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n opacity: 0.7;\\n font-weight: bold;\\n line-height: 16px;\\n}\\n.action-item__menutoggle[data-v-4f45864b] span {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.action-item__menutoggle[data-v-4f45864b]:before {\\n content: '';\\n}\\n.action-item__menutoggle--default-icon[data-v-4f45864b]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.action-item__menutoggle--default-icon[data-v-4f45864b]::before {\\n font-size: 16px;\\n}\\n.action-item__menutoggle--with-title[data-v-4f45864b] {\\n position: relative;\\n padding-left: 44px;\\n white-space: nowrap;\\n opacity: 1;\\n border: 1px solid var(--color-border-dark);\\n background-color: var(--color-background-dark);\\n background-position: 14px center;\\n font-size: inherit;\\n}\\n.action-item__menutoggle--with-title[data-v-4f45864b]:before {\\n position: absolute;\\n top: 14px;\\n left: 14px;\\n}\\n.action-item__menutoggle--primary[data-v-4f45864b] {\\n opacity: 1;\\n color: var(--color-primary-text);\\n border: none;\\n background-color: var(--color-primary-element);\\n}\\n.action-item--open .action-item__menutoggle--primary[data-v-4f45864b], .action-item__menutoggle--primary[data-v-4f45864b]:hover, .action-item__menutoggle--primary[data-v-4f45864b]:focus, .action-item__menutoggle--primary[data-v-4f45864b]:active {\\n color: var(--color-primary-text) !important;\\n background-color: var(--color-primary-element-light) !important;\\n}\\n.action-item--single[data-v-4f45864b] {\\n opacity: 0.7;\\n}\\n.action-item--single[data-v-4f45864b]:hover, .action-item--single[data-v-4f45864b]:focus, .action-item--single[data-v-4f45864b]:active {\\n opacity: 1;\\n}\\n.action-item--single > [hidden][data-v-4f45864b] {\\n display: none;\\n}\\n.ie .action-item__menu[data-v-4f45864b],\\n.ie .action-item__menu .action-item__menu_arrow[data-v-4f45864b],\\n.edge .action-item__menu[data-v-4f45864b],\\n.edge .action-item__menu .action-item__menu_arrow[data-v-4f45864b] {\\n border: 1px solid var(--color-border);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Actions.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../fonts/scss/iconfont-vue.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AEsEA;EACC,mCAAmC;EACnC,4CAAuC;EAAE,qBAAA;EACzC,mPAGmD;EAAE,eAAA;AAAgB;AAMtE;EACE,kBAAkB;EAClB,gBAAgB;AAAA;AAFlB;IAMM,mCAAmC;IACnC,YA5Ge;AAAO;AAqG5B;IAMM,mCAAmC;IACnC,YA3GQ;AAAO;AAoGrB;IAMM,mCAAmC;IACnC,YA1GgB;AAAO;AAmG7B;IAMM,mCAAmC;IACnC,YAzGS;AAAO;AAkGtB;IAMM,mCAAmC;IACnC,YAxGQ;AAAO;AAiGrB;IAMM,mCAAmC;IACnC,YAvGO;AAAO;AAgGpB;IAMM,mCAAmC;IACnC,YAtGG;AAAO;AA+FhB;IAMM,mCAAmC;IACnC,YArGK;AAAO;AA8FlB;IAMM,mCAAmC;IACnC,YApGE;AAAO;AA6Ff;IAMM,mCAAmC;IACnC,YAnGE;AAAO;AA4Ff;IAMM,mCAAmC;IACnC,YAlGE;AAAO;AA2Ff;IAMM,mCAAmC;IACnC,YAjGG;AAAO;AA0FhB;IAMM,mCAAmC;IACnC,YAhGE;AAAO;AAyFf;IAMM,mCAAmC;IACnC,YA/FQ;AAAO;AAwFrB;IAMM,mCAAmC;IACnC,YA9Fc;AAAO;AAuF3B;IAMM,mCAAmC;IACnC,YA7Fa;AAAO;AAsF1B;IAMM,mCAAmC;IACnC,YA5FmB;AAAO;AAqFhC;IAMM,mCAAmC;IACnC,YA3FgB;AAAO;AF6nB/B;EACC,kBAAkB;EAClB,qBAAqB;AAAA;AAIrB;IAMC,UChnBc;IDknBd,2CC1nBsC;AAAA;AD8nBvC;IAEC,sBAAsB;AAAA;AApBxB;IAwBE,UC5nBc;ID6nBd,2CCznBgD;AAAA;AD6nBjD;IAEC,sBAAsB;IACtB,WAAW;IACX,eCxpBmB;IDypBnB,YCzpBmB;ID0pBnB,SAAS;IACT,aCnpB8C;IDopB9C,eAAe;IACf,YAAY;IACZ,mBAAkC;IAClC,6BAA6B;AAAA;AAI9B;IAEC,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,YCtpBiB;IDupBjB,iBAAiB;IACjB,iBCtqBc;AAAA;AD+pBd;MAWC,WC1qBa;MD2qBb,YC3qBa;MD4qBb,iBC5qBa;AAAA;AD+pBd;MAiBC,WAAW;AAAA;AAGX;ME9nBC,mCAjFmB;MAkFnB,kBAAkB;MAClB,gBAAgB;MAChB,YAzEM;AAAO;AFosBd;MAGC,eCtrBY;AAAA;AD0rBd;MACC,kBAAkB;MAClB,kBChsBkB;MDisBlB,mBAAmB;MACnB,UC/qBa;MDgrBb,0CAA0C;MAE1C,8CAA8C;MAC9C,gCAAwC;MACxC,kBAAkB;AAAA;AATlB;QAYC,kBAAkB;QAClB,SCnsB4C;QDosB5C,UCpsB4C;AAAA;ADwsB9C;MACC,UC9rBa;MD+rBb,gCAAgC;MAChC,YAAY;MACZ,8CAA8C;AAAA;AAC9C;QAIC,2CAA2C;QAC3C,+DAA+D;AAAA;AAKlE;IACC,YC9sBiB;AAAA;AD6sBjB;MAKC,UCjtBa;AAAA;AD4sBd;MASC,aAAa;AAAA;AAKhB;;;;EAIE,qCAAqC;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../fonts/scss/iconfont-vue';\\n\\n.action-item {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\n\\t// put a grey round background when menu is opened\\n\\t// or hover-focused\\n\\t&--single:hover,\\n\\t&--single:focus,\\n\\t&--single:active,\\n\\t&__menutoggle:hover,\\n\\t&__menutoggle:focus,\\n\\t&__menutoggle:active {\\n\\t\\topacity: $opacity_full;\\n\\t\\t// good looking on dark AND white bg\\n\\t\\tbackground-color: $icon-focus-bg;\\n\\t}\\n\\n\\t// TODO: handle this in the future button component\\n\\t&__menutoggle:disabled,\\n\\t&--single:disabled {\\n\\t\\topacity: .3 !important;\\n\\t}\\n\\n\\t&.action-item--open .action-item__menutoggle {\\n\\t\\topacity: $opacity_full;\\n\\t\\tbackground-color: $action-background-hover;\\n\\t}\\n\\n\\t// icons\\n\\t&--single,\\n\\t&__menutoggle {\\n\\t\\tbox-sizing: border-box;\\n\\t\\twidth: auto;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: $icon-margin;\\n\\t\\tcursor: pointer;\\n\\t\\tborder: none;\\n\\t\\tborder-radius: $clickable-area / 2;\\n\\t\\tbackground-color: transparent;\\n\\t}\\n\\n\\t// icon-more\\n\\t&__menutoggle {\\n\\t\\t// align menu icon in center\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\topacity: $opacity_normal;\\n\\t\\tfont-weight: bold;\\n\\t\\tline-height: $icon-size;\\n\\n\\t\\t// image slot\\n\\t\\t/deep/ span {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\theight: $icon-size;\\n\\t\\t\\tline-height: $icon-size;\\n\\t\\t}\\n\\n\\t\\t&:before {\\n\\t\\t\\tcontent: '';\\n\\t\\t}\\n\\n\\t\\t&--default-icon {\\n\\t\\t\\t@include iconfont('more');\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tfont-size: $icon-size;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--with-title {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tpadding-left: $clickable-area;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\t\\t// with a title, we need to display this as a real button\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\tbackground-position: $icon-margin center;\\n\\t\\t\\tfont-size: inherit;\\n\\t\\t\\t// non-background icon class\\n\\t\\t\\t&:before {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: $icon-margin;\\n\\t\\t\\t\\tleft: $icon-margin;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--primary {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t.action-item--open &,\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\tcolor: var(--color-primary-text) !important;\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element-light) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--single {\\n\\t\\topacity: $opacity_normal;\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t\\t// hide anything the slot is displaying\\n\\t\\t& > [hidden] {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ie,\\n.edge {\\n\\t.action-item__menu,\\n\\t.action-item__menu .action-item__menu_arrow {\\n\\t\\tborder: 1px solid var(--color-border);\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (\\n\\t\\\"iconfont-vue-84c461f\\\": (\\n\\t\\t\\\"arrow-left-double\\\": \\\"\\\\ea01\\\",\\n\\t\\t\\\"arrow-left\\\": \\\"\\\\ea02\\\",\\n\\t\\t\\\"arrow-right-double\\\": \\\"\\\\ea03\\\",\\n\\t\\t\\\"arrow-right\\\": \\\"\\\\ea04\\\",\\n\\t\\t\\\"breadcrumb\\\": \\\"\\\\ea05\\\",\\n\\t\\t\\\"checkmark\\\": \\\"\\\\ea06\\\",\\n\\t\\t\\\"close\\\": \\\"\\\\ea07\\\",\\n\\t\\t\\\"confirm\\\": \\\"\\\\ea08\\\",\\n\\t\\t\\\"info\\\": \\\"\\\\ea09\\\",\\n\\t\\t\\\"menu\\\": \\\"\\\\ea0a\\\",\\n\\t\\t\\\"more\\\": \\\"\\\\ea0b\\\",\\n\\t\\t\\\"pause\\\": \\\"\\\\ea0c\\\",\\n\\t\\t\\\"play\\\": \\\"\\\\ea0d\\\",\\n\\t\\t\\\"triangle-s\\\": \\\"\\\\ea0e\\\",\\n\\t\\t\\\"user-status-away\\\": \\\"\\\\ea0f\\\",\\n\\t\\t\\\"user-status-dnd\\\": \\\"\\\\ea10\\\",\\n\\t\\t\\\"user-status-invisible\\\": \\\"\\\\ea11\\\",\\n\\t\\t\\\"user-status-online\\\": \\\"\\\\ea12\\\"\\n\\t)\\n));\\n\\n\\n$create-font-face: true !default; // should the @font-face tag get created?\\n\\n// should there be a custom class for each icon? will be .filename\\n$create-icon-classes: true !default; \\n\\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\\n// for each icon\\n$icon-common-class: 'icon' !default;\\n\\n// if you whish to prefix your filenames, here you can do so.\\n// if this string stays empty, your classes will use the filename, for example\\n// an icon called star.svg will result in a class called .star\\n// if you use the prefix to be 'icon-' it would result in .icon-star\\n$icon-prefix: '' !default; \\n\\n// helper function to get the correct font group\\n@function iconfont-group($group: null) {\\n @if (null == $group) {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n @if (false == map-has-key($__iconfont__data, $group)) {\\n @warn 'Undefined Iconfont Family!';\\n @return ();\\n }\\n @return map-get($__iconfont__data, $group);\\n}\\n\\n// helper function to get the correct icon of a group\\n@function iconfont-item($name) {\\n $slash: str-index($name, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($name, 0, $slash - 1);\\n $name: str-slice($name, $slash + 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n $group: iconfont-group($group);\\n @if (false == map-has-key($group, $name)) {\\n @warn 'Undefined Iconfont Glyph!';\\n @return '';\\n }\\n @return map-get($group, $name);\\n}\\n\\n// complete mixing to include the icon\\n// usage:\\n// .my_icon{ @include iconfont('star') }\\n@mixin iconfont($icon) {\\n $slash: str-index($icon, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($icon, 0, $slash - 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n &:before {\\n font-family: $group;\\n font-style: normal;\\n font-weight: 400;\\n content: iconfont-item($icon);\\n }\\n}\\n\\n// creates the font face tag if the variable is set to true (default)\\n@if $create-font-face == true {\\n @font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url('../iconfont-vue-84c461f.eot'); /* IE9 Compat Modes */\\n src: url('../iconfont-vue-84c461f.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\\n url('../iconfont-vue-84c461f.woff') format('woff'), /* Pretty Modern Browsers */\\n url('../iconfont-vue-84c461f.ttf') format('truetype'), /* Safari, Android, iOS */\\n url('../iconfont-vue-84c461f.svg') format('svg'); /* Legacy iOS */\\n }\\n}\\n\\n// creates icon classes for each individual loaded svg (default)\\n@if $create-icon-classes == true {\\n .#{$icon-common-class} {\\n font-style: normal;\\n font-weight: 400;\\n\\n @each $icon, $content in map-get($__iconfont__data, \\\"iconfont-vue-84c461f\\\") {\\n &.#{$icon-prefix}#{$icon}:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: iconfont-item(\\\"iconfont-vue-84c461f/#{$icon}\\\");\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true&\":\n/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true& ***!\n \\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.eot */ \"./src/fonts/iconfont-vue-84c461f.eot\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.woff */ \"./src/fonts/iconfont-vue-84c461f.woff\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.ttf */ \"./src/fonts/iconfont-vue-84c461f.ttf\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.svg */ \"./src/fonts/iconfont-vue-84c461f.svg\");\n// Imports\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n@font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n /* IE9 Compat Modes */\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\");\\n /* Legacy iOS */\\n}\\n.icon[data-v-3c4acfb3] {\\n font-style: normal;\\n font-weight: 400;\\n}\\n.icon.arrow-left-double[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-left[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right-double[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.breadcrumb[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.checkmark[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.close[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.confirm[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.info[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.menu[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.more[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.pause[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.play[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.triangle-s[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-away[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-dnd[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-invisible[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-online[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon-collapse[data-v-3c4acfb3] {\\n position: absolute;\\n z-index: 105;\\n width: 44px;\\n height: 44px;\\n margin: 0;\\n padding: 0;\\n transition: opacity var(--animation-quick) ease-in-out;\\n -webkit-transform: rotate(-90deg);\\n -ms-transform: rotate(-90deg);\\n transform: rotate(-90deg);\\n color: var(--color-main-text);\\n border: none;\\n border-radius: 0;\\n outline: none !important;\\n background-color: transparent;\\n box-shadow: none;\\n font-size: 18px;\\n}\\n.icon-collapse[data-v-3c4acfb3]:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.icon-collapse[data-v-3c4acfb3]:hover {\\n color: var(--color-primary);\\n}\\n.icon-collapse--rotated[data-v-3c4acfb3] {\\n -webkit-transform: rotate(0deg);\\n -ms-transform: rotate(0deg);\\n transform: rotate(0deg);\\n color: var(--color-main-text);\\n}\\n.icon-collapse--rotated[data-v-3c4acfb3]:hover {\\n color: var(--color-primary);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./AppNavigationIconCollapsible.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../fonts/scss/iconfont-vue.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AEsEA;EACC,mCAAmC;EACnC,4CAAuC;EAAE,qBAAA;EACzC,mPAGmD;EAAE,eAAA;AAAgB;AAMtE;EACE,kBAAkB;EAClB,gBAAgB;AAAA;AAFlB;IAMM,mCAAmC;IACnC,YA5Ge;AAAO;AAqG5B;IAMM,mCAAmC;IACnC,YA3GQ;AAAO;AAoGrB;IAMM,mCAAmC;IACnC,YA1GgB;AAAO;AAmG7B;IAMM,mCAAmC;IACnC,YAzGS;AAAO;AAkGtB;IAMM,mCAAmC;IACnC,YAxGQ;AAAO;AAiGrB;IAMM,mCAAmC;IACnC,YAvGO;AAAO;AAgGpB;IAMM,mCAAmC;IACnC,YAtGG;AAAO;AA+FhB;IAMM,mCAAmC;IACnC,YArGK;AAAO;AA8FlB;IAMM,mCAAmC;IACnC,YApGE;AAAO;AA6Ff;IAMM,mCAAmC;IACnC,YAnGE;AAAO;AA4Ff;IAMM,mCAAmC;IACnC,YAlGE;AAAO;AA2Ff;IAMM,mCAAmC;IACnC,YAjGG;AAAO;AA0FhB;IAMM,mCAAmC;IACnC,YAhGE;AAAO;AAyFf;IAMM,mCAAmC;IACnC,YA/FQ;AAAO;AAwFrB;IAMM,mCAAmC;IACnC,YA9Fc;AAAO;AAuF3B;IAMM,mCAAmC;IACnC,YA7Fa;AAAO;AAsF1B;IAMM,mCAAmC;IACnC,YA5FmB;AAAO;AAqFhC;IAMM,mCAAmC;IACnC,YA3FgB;AAAO;AFmC/B;EACC,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,sDAAsD;EACtD,iCAAiC;EACjC,6BAA6B;EAC7B,yBAAyB;EACzB,6BAA6B;EAC7B,YAAY;EACZ,gBAAgB;EAChB,wBAAwB;EACxB,6BAA6B;EAC7B,gBAAgB;EAChB,eAAe;AAAA;AAjBhB;IE4BI,mCAjFmB;IAkFnB,kBAAkB;IAClB,gBAAgB;IAChB,YAtEY;AAAO;AFuCvB;IAsBE,2BAA2B;AAAA;AAE5B;IACC,+BAA+B;IAC/B,2BAA2B;IAC3B,uBAAuB;IACvB,6BAA6B;AAAA;AAJ7B;MAMC,2BAA2B;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../fonts/scss/iconfont-vue';\\n\\n.icon-collapse {\\n\\tposition: absolute;\\n\\tz-index: 105; // above a, under button\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\ttransition: opacity var(--animation-quick) ease-in-out;\\n\\t-webkit-transform: rotate(-90deg);\\n\\t-ms-transform: rotate(-90deg);\\n\\ttransform: rotate(-90deg);\\n\\tcolor: var(--color-main-text);\\n\\tborder: none;\\n\\tborder-radius: 0;\\n\\toutline: none !important;\\n\\tbackground-color: transparent;\\n\\tbox-shadow: none;\\n\\tfont-size: 18px;\\n\\n\\t@include iconfont('triangle-s');\\n\\n\\t&:hover{\\n\\t\\tcolor: var(--color-primary);\\n\\t}\\n\\t&--rotated {\\n\\t\\t-webkit-transform: rotate(0deg);\\n\\t\\t-ms-transform: rotate(0deg);\\n\\t\\ttransform: rotate(0deg);\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\t&:hover{\\n\\t\\t\\tcolor: var(--color-primary);\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (\\n\\t\\\"iconfont-vue-84c461f\\\": (\\n\\t\\t\\\"arrow-left-double\\\": \\\"\\\\ea01\\\",\\n\\t\\t\\\"arrow-left\\\": \\\"\\\\ea02\\\",\\n\\t\\t\\\"arrow-right-double\\\": \\\"\\\\ea03\\\",\\n\\t\\t\\\"arrow-right\\\": \\\"\\\\ea04\\\",\\n\\t\\t\\\"breadcrumb\\\": \\\"\\\\ea05\\\",\\n\\t\\t\\\"checkmark\\\": \\\"\\\\ea06\\\",\\n\\t\\t\\\"close\\\": \\\"\\\\ea07\\\",\\n\\t\\t\\\"confirm\\\": \\\"\\\\ea08\\\",\\n\\t\\t\\\"info\\\": \\\"\\\\ea09\\\",\\n\\t\\t\\\"menu\\\": \\\"\\\\ea0a\\\",\\n\\t\\t\\\"more\\\": \\\"\\\\ea0b\\\",\\n\\t\\t\\\"pause\\\": \\\"\\\\ea0c\\\",\\n\\t\\t\\\"play\\\": \\\"\\\\ea0d\\\",\\n\\t\\t\\\"triangle-s\\\": \\\"\\\\ea0e\\\",\\n\\t\\t\\\"user-status-away\\\": \\\"\\\\ea0f\\\",\\n\\t\\t\\\"user-status-dnd\\\": \\\"\\\\ea10\\\",\\n\\t\\t\\\"user-status-invisible\\\": \\\"\\\\ea11\\\",\\n\\t\\t\\\"user-status-online\\\": \\\"\\\\ea12\\\"\\n\\t)\\n));\\n\\n\\n$create-font-face: true !default; // should the @font-face tag get created?\\n\\n// should there be a custom class for each icon? will be .filename\\n$create-icon-classes: true !default; \\n\\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\\n// for each icon\\n$icon-common-class: 'icon' !default;\\n\\n// if you whish to prefix your filenames, here you can do so.\\n// if this string stays empty, your classes will use the filename, for example\\n// an icon called star.svg will result in a class called .star\\n// if you use the prefix to be 'icon-' it would result in .icon-star\\n$icon-prefix: '' !default; \\n\\n// helper function to get the correct font group\\n@function iconfont-group($group: null) {\\n @if (null == $group) {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n @if (false == map-has-key($__iconfont__data, $group)) {\\n @warn 'Undefined Iconfont Family!';\\n @return ();\\n }\\n @return map-get($__iconfont__data, $group);\\n}\\n\\n// helper function to get the correct icon of a group\\n@function iconfont-item($name) {\\n $slash: str-index($name, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($name, 0, $slash - 1);\\n $name: str-slice($name, $slash + 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n $group: iconfont-group($group);\\n @if (false == map-has-key($group, $name)) {\\n @warn 'Undefined Iconfont Glyph!';\\n @return '';\\n }\\n @return map-get($group, $name);\\n}\\n\\n// complete mixing to include the icon\\n// usage:\\n// .my_icon{ @include iconfont('star') }\\n@mixin iconfont($icon) {\\n $slash: str-index($icon, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($icon, 0, $slash - 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n &:before {\\n font-family: $group;\\n font-style: normal;\\n font-weight: 400;\\n content: iconfont-item($icon);\\n }\\n}\\n\\n// creates the font face tag if the variable is set to true (default)\\n@if $create-font-face == true {\\n @font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url('../iconfont-vue-84c461f.eot'); /* IE9 Compat Modes */\\n src: url('../iconfont-vue-84c461f.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\\n url('../iconfont-vue-84c461f.woff') format('woff'), /* Pretty Modern Browsers */\\n url('../iconfont-vue-84c461f.ttf') format('truetype'), /* Safari, Android, iOS */\\n url('../iconfont-vue-84c461f.svg') format('svg'); /* Legacy iOS */\\n }\\n}\\n\\n// creates icon classes for each individual loaded svg (default)\\n@if $create-icon-classes == true {\\n .#{$icon-common-class} {\\n font-style: normal;\\n font-weight: 400;\\n\\n @each $icon, $content in map-get($__iconfont__data, \\\"iconfont-vue-84c461f\\\") {\\n &.#{$icon-prefix}#{$icon}:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: iconfont-item(\\\"iconfont-vue-84c461f/#{$icon}\\\");\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss&\":\n/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss& ***!\n \\**************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.eot */ \"./src/fonts/iconfont-vue-84c461f.eot\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.woff */ \"./src/fonts/iconfont-vue-84c461f.woff\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.ttf */ \"./src/fonts/iconfont-vue-84c461f.ttf\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.svg */ \"./src/fonts/iconfont-vue-84c461f.svg\");\n// Imports\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n@font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n /* IE9 Compat Modes */\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\");\\n /* Legacy iOS */\\n}\\n.icon {\\n font-style: normal;\\n font-weight: 400;\\n}\\n.icon.arrow-left-double:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-left:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right-double:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.breadcrumb:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.checkmark:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.close:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.confirm:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.info:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.menu:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.more:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.pause:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.play:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.triangle-s:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-away:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-dnd:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-invisible:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-online:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.app-navigation-entry {\\n position: relative;\\n display: flex;\\n flex-shrink: 0;\\n flex-wrap: wrap;\\n order: 1;\\n box-sizing: border-box;\\n width: 100%;\\n min-height: 44px;\\n padding-right: 4px;\\n /* hide deletion/collapse of subitems */\\n /* Second level nesting for lists */\\n}\\n.app-navigation-entry.active {\\n background-color: var(--color-primary-light) !important;\\n}\\n.app-navigation-entry:focus-within, .app-navigation-entry:hover {\\n background-color: var(--color-background-hover);\\n}\\n.app-navigation-entry.active .app-navigation-entry__children, .app-navigation-entry:focus-within .app-navigation-entry__children, .app-navigation-entry:hover .app-navigation-entry__children {\\n background-color: var(--color-main-background);\\n}\\n.app-navigation-entry.app-navigation-entry--deleted > ul, .app-navigation-entry.app-navigation-entry--collapsible:not(.app-navigation-entry--opened) > ul {\\n display: none;\\n}\\n.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link, .app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-div {\\n padding-right: 14px;\\n}\\n.app-navigation-entry .app-navigation-entry-link, .app-navigation-entry .app-navigation-entry-div {\\n z-index: 100;\\n /* above the bullet to allow click*/\\n display: flex;\\n overflow: hidden;\\n flex: 1 1 0;\\n box-sizing: border-box;\\n min-height: 44px;\\n padding: 0;\\n white-space: nowrap;\\n color: var(--color-main-text);\\n background-repeat: no-repeat;\\n background-position: 14px center;\\n background-size: 16px 16px;\\n line-height: 44px;\\n}\\n.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon, .app-navigation-entry .app-navigation-entry-div .app-navigation-entry-icon {\\n display: flex;\\n align-items: center;\\n flex: 0 0 44px;\\n justify-content: center;\\n width: 44px;\\n height: 44px;\\n background-size: 16px 16px;\\n}\\n.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__title, .app-navigation-entry .app-navigation-entry-div .app-navigation-entry__title {\\n overflow: hidden;\\n max-width: 100%;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n padding-left: 6px;\\n}\\n.app-navigation-entry .app-navigation-entry-link .editingContainer, .app-navigation-entry .app-navigation-entry-div .editingContainer {\\n width: calc(100% - 44px);\\n margin: auto;\\n}\\n.app-navigation-entry .app-navigation-entry__children {\\n position: relative;\\n display: flex;\\n flex: 0 1 auto;\\n flex-direction: column;\\n width: 100%;\\n}\\n.app-navigation-entry .app-navigation-entry__children .app-navigation-entry {\\n display: inline-flex;\\n flex-wrap: wrap;\\n padding-left: 30px;\\n}\\n\\n/* Deleted entries */\\n.app-navigation-entry__deleted {\\n display: inline-flex;\\n flex: 1 1 0;\\n padding-left: 30px !important;\\n}\\n.app-navigation-entry__deleted .app-navigation-entry__deleted-description {\\n position: relative;\\n overflow: hidden;\\n flex: 1 1 0;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n line-height: 44px;\\n}\\n\\n/* Makes the icon of the collapsible element disappear\\n* When hovering on the root element */\\n.app-navigation-entry--collapsible .icon-collapse {\\n visibility: hidden;\\n}\\n.app-navigation-entry--collapsible.app-navigation-entry--no-icon a .app-navigation-entry-icon, .app-navigation-entry--collapsible:hover a .app-navigation-entry-icon, .app-navigation-entry--collapsible:focus a .app-navigation-entry-icon {\\n visibility: hidden;\\n}\\n.app-navigation-entry--collapsible.app-navigation-entry--no-icon .icon-collapse, .app-navigation-entry--collapsible:hover .icon-collapse, .app-navigation-entry--collapsible:focus .icon-collapse {\\n visibility: visible;\\n}\\n.app-navigation-entry--collapsible.app-navigation-entry--no-icon .app-navigation-entry__children li:not(.app-navigation-entry--collapsible) a :first-child, .app-navigation-entry--collapsible:hover .app-navigation-entry__children li:not(.app-navigation-entry--collapsible) a :first-child, .app-navigation-entry--collapsible:focus .app-navigation-entry__children li:not(.app-navigation-entry--collapsible) a :first-child {\\n visibility: visible;\\n}\\n\\n/* counter and actions */\\n.app-navigation-entry__utils {\\n display: flex;\\n align-items: center;\\n flex: 0 1 auto;\\n}\\n\\n/* counter */\\n.app-navigation-entry__counter-wrapper {\\n margin-right: 2px;\\n display: flex;\\n align-items: center;\\n flex: 0 1 auto;\\n}\\n\\n/* editing state */\\n.app-navigation-entry--editing .app-navigation-entry-edit {\\n z-index: 250;\\n opacity: 1;\\n}\\n\\n/* deleted state */\\n.app-navigation-entry--deleted .app-navigation-entry-deleted {\\n z-index: 250;\\n transform: translateX(0);\\n}\\n\\n/* pinned state */\\n.app-navigation-entry--pinned {\\n order: 2;\\n margin-top: auto;\\n}\\n.app-navigation-entry--pinned ~ .app-navigation-entry--pinned {\\n margin-top: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./AppNavigationItem.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../fonts/scss/iconfont-vue.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../fonts/scss/iconfont-vue';\\n\\n.app-navigation-entry {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tflex-shrink: 0;\\n\\tflex-wrap: wrap;\\n\\torder: 1;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tmin-height: $clickable-area;\\n\\tpadding-right: 4px;\\n\\n\\t// When .active class is applied, change color background of link and utils. The\\n\\t// !important prevents the focus state to override the active state.\\n\\t&.active {\\n\\t\\tbackground-color: var(--color-primary-light) !important;\\n\\t}\\n\\t&:focus-within,\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\t&.active,\\n\\t&:focus-within,\\n\\t&:hover {\\n\\t\\t.app-navigation-entry__children {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\t}\\n\\n\\t/* hide deletion/collapse of subitems */\\n\\t&.app-navigation-entry--deleted,\\n\\t&.app-navigation-entry--collapsible:not(.app-navigation-entry--opened) {\\n\\t\\t> ul {\\n\\t\\t\\t// NO ANIMATE because if not really hidden, we can still tab through it\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t&:not(.app-navigation-entry--editing) {\\n\\t\\t.app-navigation-entry-link, .app-navigation-entry-div {\\n\\t\\t\\tpadding-right: $icon-margin;\\n\\t\\t}\\n\\t}\\n\\n\\t// Main entry link\\n\\t.app-navigation-entry-link, .app-navigation-entry-div {\\n\\t\\tz-index: 100; /* above the bullet to allow click*/\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tpadding: 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: $icon-margin center;\\n\\t\\tbackground-size: $icon-size $icon-size;\\n\\t\\tline-height: $clickable-area;\\n\\n\\t\\t.app-navigation-entry-icon {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 $clickable-area;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\tbackground-size: $icon-size $icon-size;\\n\\t\\t}\\n\\n\\t\\t.app-navigation-entry__title {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tpadding-left: 6px;\\n\\t\\t}\\n\\n\\t\\t.editingContainer {\\n\\t\\t\\twidth: calc(100% - #{$clickable-area});\\n\\t\\t\\tmargin: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Second level nesting for lists */\\n\\t.app-navigation-entry__children {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 0 1 auto;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\n\\t\\t.app-navigation-entry {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tpadding-left: $clickable-area - $icon-margin;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Deleted entries */\\n.app-navigation-entry__deleted {\\n\\tdisplay: inline-flex;\\n\\tflex: 1 1 0;\\n\\tpadding-left: $clickable-area - $icon-margin !important;\\n\\t.app-navigation-entry__deleted-description {\\n\\t\\tposition: relative;\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tline-height: $clickable-area;\\n\\t}\\n}\\n\\n/* Makes the icon of the collapsible element disappear\\n* When hovering on the root element */\\n.app-navigation-entry--collapsible {\\n\\t//shows the triangle button\\n\\t.icon-collapse {\\n\\t\\tvisibility: hidden;\\n\\t}\\n\\t&.app-navigation-entry--no-icon,\\n\\t&:hover, &:focus {\\n\\t\\ta .app-navigation-entry-icon {\\n\\t\\t\\t// hides the icon\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t}\\n\\t\\t.icon-collapse {\\n\\t\\t\\t//shows the triangle button\\n\\t\\t\\tvisibility: visible;\\n\\t\\t}\\n\\t\\t// prevent the icon of children elements from being hidden\\n\\t\\t// by the previous rule\\n\\t\\t.app-navigation-entry__children li:not(.app-navigation-entry--collapsible) a :first-child {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* counter and actions */\\n.app-navigation-entry__utils {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 1 auto;\\n}\\n\\n/* counter */\\n.app-navigation-entry__counter-wrapper {\\n\\t// Add slightly more space to the right of the counter\\n\\tmargin-right: 2px;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 1 auto;\\n}\\n\\n// STATES\\n/* editing state */\\n.app-navigation-entry--editing {\\n\\t.app-navigation-entry-edit {\\n\\t\\tz-index: 250;\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n/* deleted state */\\n.app-navigation-entry--deleted {\\n\\t.app-navigation-entry-deleted {\\n\\t\\tz-index: 250;\\n\\t\\ttransform: translateX(0);\\n\\t}\\n}\\n\\n/* pinned state */\\n.app-navigation-entry--pinned {\\n\\torder: 2;\\n\\tmargin-top: auto;\\n\\t// only put a marginTop auto to the first one!\\n\\t~ .app-navigation-entry--pinned {\\n\\t\\tmargin-top: 0;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (\\n\\t\\\"iconfont-vue-84c461f\\\": (\\n\\t\\t\\\"arrow-left-double\\\": \\\"\\\\ea01\\\",\\n\\t\\t\\\"arrow-left\\\": \\\"\\\\ea02\\\",\\n\\t\\t\\\"arrow-right-double\\\": \\\"\\\\ea03\\\",\\n\\t\\t\\\"arrow-right\\\": \\\"\\\\ea04\\\",\\n\\t\\t\\\"breadcrumb\\\": \\\"\\\\ea05\\\",\\n\\t\\t\\\"checkmark\\\": \\\"\\\\ea06\\\",\\n\\t\\t\\\"close\\\": \\\"\\\\ea07\\\",\\n\\t\\t\\\"confirm\\\": \\\"\\\\ea08\\\",\\n\\t\\t\\\"info\\\": \\\"\\\\ea09\\\",\\n\\t\\t\\\"menu\\\": \\\"\\\\ea0a\\\",\\n\\t\\t\\\"more\\\": \\\"\\\\ea0b\\\",\\n\\t\\t\\\"pause\\\": \\\"\\\\ea0c\\\",\\n\\t\\t\\\"play\\\": \\\"\\\\ea0d\\\",\\n\\t\\t\\\"triangle-s\\\": \\\"\\\\ea0e\\\",\\n\\t\\t\\\"user-status-away\\\": \\\"\\\\ea0f\\\",\\n\\t\\t\\\"user-status-dnd\\\": \\\"\\\\ea10\\\",\\n\\t\\t\\\"user-status-invisible\\\": \\\"\\\\ea11\\\",\\n\\t\\t\\\"user-status-online\\\": \\\"\\\\ea12\\\"\\n\\t)\\n));\\n\\n\\n$create-font-face: true !default; // should the @font-face tag get created?\\n\\n// should there be a custom class for each icon? will be .filename\\n$create-icon-classes: true !default; \\n\\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\\n// for each icon\\n$icon-common-class: 'icon' !default;\\n\\n// if you whish to prefix your filenames, here you can do so.\\n// if this string stays empty, your classes will use the filename, for example\\n// an icon called star.svg will result in a class called .star\\n// if you use the prefix to be 'icon-' it would result in .icon-star\\n$icon-prefix: '' !default; \\n\\n// helper function to get the correct font group\\n@function iconfont-group($group: null) {\\n @if (null == $group) {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n @if (false == map-has-key($__iconfont__data, $group)) {\\n @warn 'Undefined Iconfont Family!';\\n @return ();\\n }\\n @return map-get($__iconfont__data, $group);\\n}\\n\\n// helper function to get the correct icon of a group\\n@function iconfont-item($name) {\\n $slash: str-index($name, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($name, 0, $slash - 1);\\n $name: str-slice($name, $slash + 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n $group: iconfont-group($group);\\n @if (false == map-has-key($group, $name)) {\\n @warn 'Undefined Iconfont Glyph!';\\n @return '';\\n }\\n @return map-get($group, $name);\\n}\\n\\n// complete mixing to include the icon\\n// usage:\\n// .my_icon{ @include iconfont('star') }\\n@mixin iconfont($icon) {\\n $slash: str-index($icon, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($icon, 0, $slash - 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n &:before {\\n font-family: $group;\\n font-style: normal;\\n font-weight: 400;\\n content: iconfont-item($icon);\\n }\\n}\\n\\n// creates the font face tag if the variable is set to true (default)\\n@if $create-font-face == true {\\n @font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url('../iconfont-vue-84c461f.eot'); /* IE9 Compat Modes */\\n src: url('../iconfont-vue-84c461f.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\\n url('../iconfont-vue-84c461f.woff') format('woff'), /* Pretty Modern Browsers */\\n url('../iconfont-vue-84c461f.ttf') format('truetype'), /* Safari, Android, iOS */\\n url('../iconfont-vue-84c461f.svg') format('svg'); /* Legacy iOS */\\n }\\n}\\n\\n// creates icon classes for each individual loaded svg (default)\\n@if $create-icon-classes == true {\\n .#{$icon-common-class} {\\n font-style: normal;\\n font-weight: 400;\\n\\n @each $icon, $content in map-get($__iconfont__data, \\\"iconfont-vue-84c461f\\\") {\\n &.#{$icon-prefix}#{$icon}:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: iconfont-item(\\\"iconfont-vue-84c461f/#{$icon}\\\");\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss&\":\n/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss& ***!\n \\***************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.eot */ \"./src/fonts/iconfont-vue-84c461f.eot\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.woff */ \"./src/fonts/iconfont-vue-84c461f.woff\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.ttf */ \"./src/fonts/iconfont-vue-84c461f.ttf\");\n/* harmony import */ var _fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../fonts/iconfont-vue-84c461f.svg */ \"./src/fonts/iconfont-vue-84c461f.svg\");\n// Imports\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_eot__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_woff__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(_fonts_iconfont_vue_84c461f_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n@font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n /* IE9 Compat Modes */\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\");\\n /* Legacy iOS */\\n}\\n.icon {\\n font-style: normal;\\n font-weight: 400;\\n}\\n.icon.arrow-left-double:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-left:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right-double:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.arrow-right:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.breadcrumb:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.checkmark:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.close:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.confirm:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.info:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.menu:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.more:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.pause:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.play:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.triangle-s:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-away:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-dnd:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-invisible:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.icon.user-status-online:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: \\\"\\\";\\n}\\n.app-navigation-entry__inline-input-container {\\n flex: 1 0 100%;\\n width: 100%;\\n}\\n.app-navigation-entry__inline-input-container form {\\n display: flex;\\n}\\n.app-navigation-entry__inline-input-container form .app-navigation-entry__inline-input {\\n flex: 1 1 100%;\\n font-size: 14px;\\n}\\n.app-navigation-entry__inline-input-container form button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 44px !important;\\n color: var(--color-main-text);\\n background: none;\\n font-size: 16px;\\n}\\n.app-navigation-entry__inline-input-container form button::before {\\n opacity: 0.7;\\n}\\n.app-navigation-entry__inline-input-container form button:hover::before, .app-navigation-entry__inline-input-container form button:focus::before {\\n opacity: 1;\\n}\\n.app-navigation-entry__inline-input-container form button.icon-confirm {\\n border-left: none;\\n}\\n.app-navigation-entry__inline-input-container form button.icon-confirm:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.app-navigation-entry__inline-input-container form button.icon-confirm:hover {\\n border-radius: 0px var(--border-radius) var(--border-radius) 0px !important;\\n}\\n.app-navigation-entry__inline-input-container form button.icon-close:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n font-style: normal;\\n font-weight: 400;\\n content: \\\"\\\";\\n}\\n.app-navigation-entry__inline-input-container form .icon-close {\\n margin: 0;\\n border: none;\\n background-color: transparent;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./InputConfirmCancel.vue\",\"webpack://./../../assets/variables.scss\",\"webpack://./../../fonts/scss/iconfont-vue.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AEsEA;EACC,mCAAmC;EACnC,4CAAuC;EAAE,qBAAA;EACzC,mPAGmD;EAAE,eAAA;AAAgB;AAMtE;EACE,kBAAkB;EAClB,gBAAgB;AAAA;AAFlB;IAMM,mCAAmC;IACnC,YA5Ge;AAAO;AAqG5B;IAMM,mCAAmC;IACnC,YA3GQ;AAAO;AAoGrB;IAMM,mCAAmC;IACnC,YA1GgB;AAAO;AAmG7B;IAMM,mCAAmC;IACnC,YAzGS;AAAO;AAkGtB;IAMM,mCAAmC;IACnC,YAxGQ;AAAO;AAiGrB;IAMM,mCAAmC;IACnC,YAvGO;AAAO;AAgGpB;IAMM,mCAAmC;IACnC,YAtGG;AAAO;AA+FhB;IAMM,mCAAmC;IACnC,YArGK;AAAO;AA8FlB;IAMM,mCAAmC;IACnC,YApGE;AAAO;AA6Ff;IAMM,mCAAmC;IACnC,YAnGE;AAAO;AA4Ff;IAMM,mCAAmC;IACnC,YAlGE;AAAO;AA2Ff;IAMM,mCAAmC;IACnC,YAjGG;AAAO;AA0FhB;IAMM,mCAAmC;IACnC,YAhGE;AAAO;AAyFf;IAMM,mCAAmC;IACnC,YA/FQ;AAAO;AAwFrB;IAMM,mCAAmC;IACnC,YA9Fc;AAAO;AAuF3B;IAMM,mCAAmC;IACnC,YA7Fa;AAAO;AAsF1B;IAMM,mCAAmC;IACnC,YA5FmB;AAAO;AAqFhC;IAMM,mCAAmC;IACnC,YA3FgB;AAAO;AFiE/B;EACC,cAAc;EACd,WAAW;AAAA;AAFZ;IAIE,aAAa;AAAA;AAJf;MAMG,cAAc;MACd,eAAe;AAAA;AAPlB;MAYG,aAAa;MACb,mBAAmB;MACnB,uBAAuB;MACvB,sBAAiC;MACjC,6BAA6B;MAC7B,gBAAgB;MAChB,eAAe;AAAA;AAlBlB;QAsBI,YC/De;AAAA;ADyCnB;QA2BK,UCnEW;AAAA;ADwChB;QAiCI,iBAAiB;AAAA;AAjCrB;UEFI,mCAjFmB;UAkFnB,kBAAkB;UAClB,gBAAgB;UAChB,YA5ES;AAAO;AF2EpB;QAoCI,2EAA2E;AAAA;AApC/E;QEFI,mCAjFmB;QAkFnB,kBAAkB;QAClB,gBAAgB;QAChB,YA7EO;AAAO;AF4ElB;MA4CG,SAAS;MACT,YAAY;MACZ,6BAA6B;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import '../../fonts/scss/iconfont-vue';\\n\\n.app-navigation-entry__inline-input-container {\\n\\tflex: 1 0 100%;\\n\\twidth: 100%;\\n\\tform {\\n\\t\\tdisplay: flex;\\n\\t\\t.app-navigation-entry__inline-input {\\n\\t\\t\\tflex: 1 1 100%;\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t}\\n\\n\\t\\t// submit and cancel buttons\\n\\t\\tbutton {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: $clickable-area !important;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\tbackground: none;\\n\\t\\t\\tfont-size: 16px;\\n\\n\\t\\t\\t// icon hover/focus feedback\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\topacity: $opacity_normal;\\n\\t\\t\\t}\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\t&::before {\\n\\t\\t\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.icon-confirm {\\n\\t\\t\\t\\t@include iconfont('confirm');\\n\\t\\t\\t\\tborder-left: none;\\n\\t\\t\\t}\\n\\t\\t\\t&.icon-confirm:hover {\\n\\t\\t\\t\\tborder-radius: 0px var(--border-radius) var(--border-radius) 0px !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.icon-close {\\n\\t\\t\\t\\t@include iconfont('close');\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.icon-close {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\",\"$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (\\n\\t\\\"iconfont-vue-84c461f\\\": (\\n\\t\\t\\\"arrow-left-double\\\": \\\"\\\\ea01\\\",\\n\\t\\t\\\"arrow-left\\\": \\\"\\\\ea02\\\",\\n\\t\\t\\\"arrow-right-double\\\": \\\"\\\\ea03\\\",\\n\\t\\t\\\"arrow-right\\\": \\\"\\\\ea04\\\",\\n\\t\\t\\\"breadcrumb\\\": \\\"\\\\ea05\\\",\\n\\t\\t\\\"checkmark\\\": \\\"\\\\ea06\\\",\\n\\t\\t\\\"close\\\": \\\"\\\\ea07\\\",\\n\\t\\t\\\"confirm\\\": \\\"\\\\ea08\\\",\\n\\t\\t\\\"info\\\": \\\"\\\\ea09\\\",\\n\\t\\t\\\"menu\\\": \\\"\\\\ea0a\\\",\\n\\t\\t\\\"more\\\": \\\"\\\\ea0b\\\",\\n\\t\\t\\\"pause\\\": \\\"\\\\ea0c\\\",\\n\\t\\t\\\"play\\\": \\\"\\\\ea0d\\\",\\n\\t\\t\\\"triangle-s\\\": \\\"\\\\ea0e\\\",\\n\\t\\t\\\"user-status-away\\\": \\\"\\\\ea0f\\\",\\n\\t\\t\\\"user-status-dnd\\\": \\\"\\\\ea10\\\",\\n\\t\\t\\\"user-status-invisible\\\": \\\"\\\\ea11\\\",\\n\\t\\t\\\"user-status-online\\\": \\\"\\\\ea12\\\"\\n\\t)\\n));\\n\\n\\n$create-font-face: true !default; // should the @font-face tag get created?\\n\\n// should there be a custom class for each icon? will be .filename\\n$create-icon-classes: true !default; \\n\\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\\n// for each icon\\n$icon-common-class: 'icon' !default;\\n\\n// if you whish to prefix your filenames, here you can do so.\\n// if this string stays empty, your classes will use the filename, for example\\n// an icon called star.svg will result in a class called .star\\n// if you use the prefix to be 'icon-' it would result in .icon-star\\n$icon-prefix: '' !default; \\n\\n// helper function to get the correct font group\\n@function iconfont-group($group: null) {\\n @if (null == $group) {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n @if (false == map-has-key($__iconfont__data, $group)) {\\n @warn 'Undefined Iconfont Family!';\\n @return ();\\n }\\n @return map-get($__iconfont__data, $group);\\n}\\n\\n// helper function to get the correct icon of a group\\n@function iconfont-item($name) {\\n $slash: str-index($name, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($name, 0, $slash - 1);\\n $name: str-slice($name, $slash + 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n $group: iconfont-group($group);\\n @if (false == map-has-key($group, $name)) {\\n @warn 'Undefined Iconfont Glyph!';\\n @return '';\\n }\\n @return map-get($group, $name);\\n}\\n\\n// complete mixing to include the icon\\n// usage:\\n// .my_icon{ @include iconfont('star') }\\n@mixin iconfont($icon) {\\n $slash: str-index($icon, '/');\\n $group: null;\\n @if ($slash) {\\n $group: str-slice($icon, 0, $slash - 1);\\n } @else {\\n $group: nth(map-keys($__iconfont__data), 1);\\n }\\n &:before {\\n font-family: $group;\\n font-style: normal;\\n font-weight: 400;\\n content: iconfont-item($icon);\\n }\\n}\\n\\n// creates the font face tag if the variable is set to true (default)\\n@if $create-font-face == true {\\n @font-face {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n src: url('../iconfont-vue-84c461f.eot'); /* IE9 Compat Modes */\\n src: url('../iconfont-vue-84c461f.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\\n url('../iconfont-vue-84c461f.woff') format('woff'), /* Pretty Modern Browsers */\\n url('../iconfont-vue-84c461f.ttf') format('truetype'), /* Safari, Android, iOS */\\n url('../iconfont-vue-84c461f.svg') format('svg'); /* Legacy iOS */\\n }\\n}\\n\\n// creates icon classes for each individual loaded svg (default)\\n@if $create-icon-classes == true {\\n .#{$icon-common-class} {\\n font-style: normal;\\n font-weight: 400;\\n\\n @each $icon, $content in map-get($__iconfont__data, \\\"iconfont-vue-84c461f\\\") {\\n &.#{$icon-prefix}#{$icon}:before {\\n font-family: \\\"iconfont-vue-84c461f\\\";\\n content: iconfont-item(\\\"iconfont-vue-84c461f/#{$icon}\\\");\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.popover {\\n z-index: 100000;\\n display: block !important;\\n filter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n}\\n.popover__inner {\\n padding: 0;\\n color: var(--color-main-text);\\n border-radius: var(--border-radius);\\n background: var(--color-main-background);\\n}\\n.popover__arrow {\\n position: absolute;\\n z-index: 1;\\n width: 0;\\n height: 0;\\n margin: 10px;\\n border-style: solid;\\n border-color: var(--color-main-background);\\n}\\n.popover[x-placement^='top'] {\\n margin-bottom: 10px;\\n}\\n.popover[x-placement^='top'] .popover__arrow {\\n bottom: -10px;\\n left: calc(50% - $arrow-width);\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 10px 10px 0 10px;\\n border-right-color: transparent !important;\\n border-bottom-color: transparent !important;\\n border-left-color: transparent !important;\\n}\\n.popover[x-placement^='bottom'] {\\n margin-top: 10px;\\n}\\n.popover[x-placement^='bottom'] .popover__arrow {\\n top: -10px;\\n left: calc(50% - $arrow-width);\\n margin-top: 0;\\n margin-bottom: 0;\\n border-width: 0 10px 10px 10px;\\n border-top-color: transparent !important;\\n border-right-color: transparent !important;\\n border-left-color: transparent !important;\\n}\\n.popover[x-placement^='right'] {\\n margin-left: 10px;\\n}\\n.popover[x-placement^='right'] .popover__arrow {\\n top: calc(50% - $arrow-width);\\n left: -10px;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 10px 10px 0;\\n border-top-color: transparent !important;\\n border-bottom-color: transparent !important;\\n border-left-color: transparent !important;\\n}\\n.popover[x-placement^='left'] {\\n margin-right: 10px;\\n}\\n.popover[x-placement^='left'] .popover__arrow {\\n top: calc(50% - $arrow-width);\\n right: -10px;\\n margin-right: 0;\\n margin-left: 0;\\n border-width: 10px 0 10px 10px;\\n border-top-color: transparent !important;\\n border-right-color: transparent !important;\\n border-bottom-color: transparent !important;\\n}\\n.popover[aria-hidden='true'] {\\n visibility: hidden;\\n transition: opacity var(--animation-quick), visibility var(--animation-quick);\\n opacity: 0;\\n}\\n.popover[aria-hidden='false'] {\\n visibility: visible;\\n transition: opacity var(--animation-quick);\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Popover.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AA2FF;EACC,eAAe;EACf,yBAAyB;EAEzB,uDAAuD;AAAA;AAEvD;IACC,UAAU;IACV,6BAA6B;IAC7B,mCAAmC;IACnC,wCAAwC;AAAA;AAGzC;IACC,kBAAkB;IAClB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,YApBgB;IAqBhB,mBAAmB;IACnB,0CAA0C;AAAA;AApB5C;IAwBE,mBA1BgB;AAAA;AAElB;MA2BG,aA7Be;MA8Bf,8BAA8B;MAC9B,aAAa;MACb,gBAAgB;MAChB,8BAjCe;MAkCf,0CAA0C;MAC1C,2CAA2C;MAC3C,yCAAyC;AAAA;AAlC5C;IAuCE,gBAzCgB;AAAA;AAElB;MA0CG,UA5Ce;MA6Cf,8BAA8B;MAC9B,aAAa;MACb,gBAAgB;MAChB,8BAhDe;MAiDf,wCAAwC;MACxC,0CAA0C;MAC1C,yCAAyC;AAAA;AAjD5C;IAsDE,iBAxDgB;AAAA;AAElB;MAyDG,6BAA6B;MAC7B,WA5De;MA6Df,eAAe;MACf,cAAc;MACd,8BAAsD;MACtD,wCAAwC;MACxC,2CAA2C;MAC3C,yCAAyC;AAAA;AAhE5C;IAqEE,kBAvEgB;AAAA;AAElB;MAwEG,6BAA6B;MAC7B,YA3Ee;MA4Ef,eAAe;MACf,cAAc;MACd,8BA9Ee;MA+Ef,wCAAwC;MACxC,0CAA0C;MAC1C,2CAA2C;AAAA;AA/E9C;IAoFE,kBAAkB;IAClB,6EAA6E;IAC7E,UAAU;AAAA;AAtFZ;IA0FE,mBAAmB;IACnB,0CAA0C;IAC1C,UAAU;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$arrow-width: 10px;\\n\\n.popover {\\n\\tz-index: 100000;\\n\\tdisplay: block !important;\\n\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t&__inner {\\n\\t\\tpadding: 0;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--color-main-background);\\n\\t}\\n\\n\\t&__arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: $arrow-width;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n\\n\\t&[x-placement^='top'] {\\n\\t\\tmargin-bottom: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='bottom'] {\\n\\t\\tmargin-top: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='right'] {\\n\\t\\tmargin-left: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='left'] {\\n\\t\\tmargin-right: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/api.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/api.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/getUrl.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true&\":\n/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true& ***!\n \\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_style_index_0_id_2e929b4f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_style_index_0_id_2e929b4f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_style_index_0_id_2e929b4f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_style_index_0_id_4f45864b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_style_index_0_id_4f45864b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_style_index_0_id_4f45864b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true&\":\n/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true& ***!\n \\*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_style_index_0_id_3c4acfb3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_style_index_0_id_3c4acfb3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_style_index_0_id_3c4acfb3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationItem.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss&\":\n/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss& ***!\n \\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./InputConfirmCancel.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true&\":\n/*!*******************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ActionButton/ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true& ***!\n \\*******************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled } },\n [\n _c(\n \"button\",\n {\n staticClass: \"action-button\",\n class: { focusable: _vm.isFocusable },\n attrs: { \"aria-label\": _vm.ariaLabel },\n on: { click: _vm.onClick }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"action-button__icon\",\n class: [_vm.isIconUrl ? \"action-button__icon--url\" : _vm.icon],\n style: {\n backgroundImage: _vm.isIconUrl ? \"url(\" + _vm.icon + \")\" : null\n }\n },\n [_vm._t(\"icon\")],\n 2\n ),\n _vm._v(\" \"),\n _vm.title\n ? _c(\"p\", [\n _c(\"strong\", { staticClass: \"action-button__title\" }, [\n _vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.title) + \"\\n\\t\\t\\t\")\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", {\n staticClass: \"action-button__longtext\",\n domProps: { textContent: _vm._s(_vm.text) }\n })\n ])\n : _vm.isLongText\n ? _c(\"p\", {\n staticClass: \"action-button__longtext\",\n domProps: { textContent: _vm._s(_vm.text) }\n })\n : _c(\"span\", { staticClass: \"action-button__text\" }, [\n _vm._v(_vm._s(_vm.text))\n ]),\n _vm._v(\" \"),\n false ? undefined : _vm._e()\n ],\n 2\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=template&id=4f45864b&scoped=true&\":\n/*!*********************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Actions/Actions.vue?vue&type=template&id=4f45864b&scoped=true& ***!\n \\*********************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _obj, _obj$1\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.isValidSingleAction && !_vm.forceMenu\n ? _c(\n \"element\",\n _vm._b(\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.firstAction.text,\n expression: \"firstAction.text\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"action-item action-item--single\",\n class:\n ((_obj = {}),\n (_obj[_vm.firstAction.icon] = _vm.firstAction.icon),\n (_obj[_vm.firstActionClass] = _vm.firstActionClass),\n _obj),\n attrs: { rel: \"noreferrer noopener\", disabled: _vm.disabled },\n on: _vm._d({ focus: _vm.onFocus, blur: _vm.onBlur }, [\n _vm.firstActionEventBinding,\n _vm.execFirstAction\n ])\n },\n \"element\",\n _vm.firstActionBinding,\n false\n ),\n [\n _c(\"VNodes\", { attrs: { vnodes: _vm.firstActionIconSlot } }),\n _vm._v(\" \"),\n _c(\n \"span\",\n { attrs: { \"aria-hidden\": true, hidden: \"\" } },\n [_vm._t(\"default\")],\n 2\n )\n ],\n 1\n )\n : _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.hasMultipleActions || _vm.forceMenu,\n expression: \"hasMultipleActions || forceMenu\"\n }\n ],\n staticClass: \"action-item\",\n class: { \"action-item--open\": _vm.opened }\n },\n [\n _c(\n \"Popover\",\n {\n attrs: {\n delay: 0,\n \"handle-resize\": true,\n open: _vm.opened,\n placement: _vm.placement,\n \"boundaries-element\": _vm.boundariesElement,\n container: _vm.container\n },\n on: {\n \"update:open\": function($event) {\n _vm.opened = $event\n },\n show: _vm.openMenu,\n \"after-show\": _vm.onOpen,\n hide: _vm.closeMenu\n }\n },\n [\n _c(\n \"button\",\n {\n ref: \"menuButton\",\n staticClass: \"icon action-item__menutoggle\",\n class:\n ((_obj$1 = {}),\n (_obj$1[_vm.defaultIcon] = !_vm.iconSlotIsPopulated),\n (_obj$1[\"action-item__menutoggle--with-title\"] =\n _vm.menuTitle),\n (_obj$1[\"action-item__menutoggle--primary\"] = _vm.primary),\n _obj$1),\n attrs: {\n slot: \"trigger\",\n disabled: _vm.disabled,\n \"aria-label\": _vm.ariaLabel,\n \"aria-haspopup\": \"true\",\n \"aria-controls\": _vm.randomId,\n \"test-attr\": \"1\",\n \"aria-expanded\": _vm.opened ? \"true\" : \"false\"\n },\n on: { focus: _vm.onFocus, blur: _vm.onBlur },\n slot: \"trigger\"\n },\n [\n _vm._t(\"icon\"),\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.menuTitle) + \"\\n\\t\\t\")\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.opened,\n expression: \"opened\"\n }\n ],\n ref: \"menu\",\n class: { open: _vm.opened },\n attrs: { tabindex: \"-1\" },\n on: {\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n return _vm.focusPreviousAction($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n return _vm.focusNextAction($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n return _vm.focusNextAction($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")\n ) {\n return null\n }\n if (!$event.shiftKey) {\n return null\n }\n if ($event.ctrlKey || $event.altKey || $event.metaKey) {\n return null\n }\n return _vm.focusPreviousAction($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"page-up\",\n undefined,\n $event.key,\n undefined\n )\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n return _vm.focusFirstAction($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"page-down\",\n undefined,\n $event.key,\n undefined\n )\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n return _vm.focusLastAction($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.closeMenu($event)\n }\n ],\n mousemove: _vm.onMouseFocusAction\n }\n },\n [\n _c(\n \"ul\",\n { attrs: { id: _vm.randomId, tabindex: \"-1\" } },\n [_vm.opened ? [_vm._t(\"default\")] : _vm._e()],\n 2\n )\n ]\n )\n ]\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true&\":\n/*!****************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true& ***!\n \\****************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"button\", {\n staticClass: \"icon-collapse\",\n class: { \"icon-collapse--rotated\": _vm.open },\n on: { click: _vm.onClick }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=template&id=210dfea1&\":\n/*!*****************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=template&id=210dfea1& ***!\n \\*****************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _obj\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"nav-element\",\n _vm._b(\n {\n staticClass: \"app-navigation-entry\",\n class: {\n \"app-navigation-entry--no-icon\": !_vm.isIconShown,\n \"app-navigation-entry--opened\": _vm.opened,\n \"app-navigation-entry--pinned\": _vm.pinned,\n \"app-navigation-entry--editing\": _vm.editingActive,\n \"app-navigation-entry--deleted\": _vm.undo,\n \"app-navigation-entry--collapsible\": _vm.collapsible,\n active: _vm.isActive\n }\n },\n \"nav-element\",\n _vm.navElement,\n false\n ),\n [\n !_vm.undo\n ? _c(\n \"a\",\n {\n staticClass: \"app-navigation-entry-link\",\n attrs: { href: \"#\" },\n on: { click: _vm.onClick }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"app-navigation-entry-icon\",\n class:\n ((_obj = { \"icon-loading-small\": _vm.loading }),\n (_obj[_vm.icon] = _vm.icon && _vm.isIconShown),\n _obj)\n },\n [!_vm.loading ? _vm._t(\"icon\") : _vm._e()],\n 2\n ),\n _vm._v(\" \"),\n !_vm.editingActive\n ? _c(\n \"span\",\n {\n staticClass: \"app-navigation-entry__title\",\n attrs: { title: _vm.title }\n },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.title) + \"\\n\\t\\t\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.editingActive\n ? _c(\n \"div\",\n { staticClass: \"editingContainer\" },\n [\n _c(\"InputConfirmCancel\", {\n ref: \"editingInput\",\n attrs: {\n placeholder:\n _vm.editPlaceholder !== \"\"\n ? _vm.editPlaceholder\n : _vm.title\n },\n on: {\n cancel: _vm.cancelEditing,\n confirm: _vm.handleEditingDone\n },\n model: {\n value: _vm.editingValue,\n callback: function($$v) {\n _vm.editingValue = $$v\n },\n expression: \"editingValue\"\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.collapsible\n ? _c(\"AppNavigationIconCollapsible\", {\n attrs: { open: _vm.opened },\n on: {\n click: function($event) {\n $event.preventDefault()\n $event.stopPropagation()\n return _vm.toggleCollapse($event)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.undo\n ? _c(\"div\", { staticClass: \"app-navigation-entry__deleted\" }, [\n _c(\n \"div\",\n { staticClass: \"app-navigation-entry__deleted-description\" },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.title) + \"\\n\\t\\t\")]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.hasUtils\n ? _c(\n \"div\",\n { staticClass: \"app-navigation-entry__utils\" },\n [\n _vm.$slots.counter\n ? _c(\n \"div\",\n { staticClass: \"app-navigation-entry__counter-wrapper\" },\n [_vm._t(\"counter\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"Actions\",\n {\n attrs: {\n \"menu-align\": \"right\",\n placement: _vm.menuPlacement,\n open: _vm.menuOpen,\n \"force-menu\": _vm.forceMenu,\n \"default-icon\": _vm.menuIcon\n },\n on: { \"update:open\": _vm.onMenuToggle }\n },\n [\n _vm.editable && !_vm.editingActive\n ? _c(\n \"ActionButton\",\n {\n attrs: { icon: \"icon-rename\" },\n on: { click: _vm.handleEdit }\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" + _vm._s(_vm.editLabel) + \"\\n\\t\\t\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.undo\n ? _c(\"ActionButton\", {\n attrs: {\n icon:\n \"app-navigation-entry__deleted-button icon-history\"\n },\n on: { click: _vm.handleUndo }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm._t(\"actions\")\n ],\n 2\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.canHaveChildren && _vm.hasChildren\n ? _c(\n \"ul\",\n { staticClass: \"app-navigation-entry__children\" },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm._t(\"extra\")\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=template&id=185307b2&\":\n/*!******************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=template&id=185307b2& ***!\n \\******************************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-navigation-entry__inline-input-container\" },\n [\n _c(\n \"form\",\n {\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.confirm($event)\n },\n keydown: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])\n ) {\n return null\n }\n if (\n $event.ctrlKey ||\n $event.shiftKey ||\n $event.altKey ||\n $event.metaKey\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.cancel($event)\n },\n click: function($event) {\n $event.stopPropagation()\n $event.preventDefault()\n }\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.valueModel,\n expression: \"valueModel\"\n }\n ],\n ref: \"input\",\n staticClass: \"app-navigation-entry__inline-input\",\n attrs: { type: \"text\", placeholder: _vm.placeholder },\n domProps: { value: _vm.valueModel },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.valueModel = $event.target.value\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"button\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\" },\n on: {\n click: function($event) {\n $event.stopPropagation()\n $event.preventDefault()\n return _vm.confirm($event)\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"button\", {\n staticClass: \"icon-close\",\n attrs: { type: \"reset\" },\n on: {\n click: function($event) {\n $event.stopPropagation()\n $event.preventDefault()\n return _vm.cancel($event)\n }\n }\n })\n ]\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\":\n/*!*********************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Popover/Popover.vue?vue&type=template&id=45093cca& ***!\n \\*********************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"VPopover\",\n _vm._g(\n _vm._b(\n {\n ref: \"popover\",\n attrs: {\n \"popover-base-class\": \"popover\",\n \"popover-wrapper-class\": \"popover__wrapper\",\n \"popover-arrow-class\": \"popover__arrow\",\n \"popover-inner-class\": \"popover__inner\"\n }\n },\n \"VPopover\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _vm._t(\"trigger\"),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"popover\" }, [_vm._t(\"default\")], 2)\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"./src/components/ActionButton/ActionButton.vue\":\n/*!******************************************************!*\\\n !*** ./src/components/ActionButton/ActionButton.vue ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true& */ \"./src/components/ActionButton/ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true&\");\n/* harmony import */ var _ActionButton_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActionButton.vue?vue&type=script&lang=js& */ \"./src/components/ActionButton/ActionButton.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _ActionButton_vue_vue_type_style_index_0_id_2e929b4f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true& */ \"./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ActionButton.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/ActionButton/ActionButton.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _ActionButton_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"2e929b4f\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _ActionButton_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/ActionButton/ActionButton.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/ActionButton/ActionButton.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*********************************************************************************************!*\\\n !*** ./src/components/ActionButton/ActionButton.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*********************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/ActionButton/ActionButton.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************!*\\\n !*** ./src/components/ActionButton/ActionButton.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true&\":\n/*!****************************************************************************************************************!*\\\n !*** ./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true& ***!\n \\****************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_style_index_0_id_2e929b4f_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=style&index=0&id=2e929b4f&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/ActionButton/ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true&\":\n/*!*************************************************************************************************!*\\\n !*** ./src/components/ActionButton/ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true& ***!\n \\*************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/ActionButton/ActionButton.vue?vue&type=template&id=2e929b4f&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionButton_vue_vue_type_template_id_2e929b4f_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Actions/Actions.vue\":\n/*!********************************************!*\\\n !*** ./src/components/Actions/Actions.vue ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Actions.vue?vue&type=template&id=4f45864b&scoped=true& */ \"./src/components/Actions/Actions.vue?vue&type=template&id=4f45864b&scoped=true&\");\n/* harmony import */ var _Actions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Actions.vue?vue&type=script&lang=js& */ \"./src/components/Actions/Actions.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Actions_vue_vue_type_style_index_0_id_4f45864b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true& */ \"./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Actions.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Actions/Actions.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _Actions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"4f45864b\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _Actions_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Actions/Actions.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Actions/Actions.vue?vue&type=custom&index=0&blockType=docs\":\n/*!***********************************************************************************!*\\\n !*** ./src/components/Actions/Actions.vue?vue&type=custom&index=0&blockType=docs ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Actions/Actions.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************!*\\\n !*** ./src/components/Actions/Actions.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Actions.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true&\":\n/*!******************************************************************************************************!*\\\n !*** ./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true& ***!\n \\******************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_style_index_0_id_4f45864b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=style&index=0&id=4f45864b&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/Actions/Actions.vue?vue&type=template&id=4f45864b&scoped=true&\":\n/*!***************************************************************************************!*\\\n !*** ./src/components/Actions/Actions.vue?vue&type=template&id=4f45864b&scoped=true& ***!\n \\***************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Actions.vue?vue&type=template&id=4f45864b&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Actions/Actions.vue?vue&type=template&id=4f45864b&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Actions_vue_vue_type_template_id_4f45864b_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue\":\n/*!***************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true& */ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true&\");\n/* harmony import */ var _AppNavigationIconCollapsible_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppNavigationIconCollapsible.vue?vue&type=script&lang=js& */ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _AppNavigationIconCollapsible_vue_vue_type_style_index_0_id_3c4acfb3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true& */ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _AppNavigationIconCollapsible_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"3c4acfb3\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppNavigationItem/AppNavigationIconCollapsible.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=script&lang=js&\":\n/*!****************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=script&lang=js& ***!\n \\****************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationIconCollapsible.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true&\":\n/*!*************************************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true& ***!\n \\*************************************************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_style_index_0_id_3c4acfb3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=style&index=0&id=3c4acfb3&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true&\":\n/*!**********************************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true& ***!\n \\**********************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationIconCollapsible.vue?vue&type=template&id=3c4acfb3&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationIconCollapsible_vue_vue_type_template_id_3c4acfb3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationItem.vue\":\n/*!****************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationItem.vue ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationItem.vue?vue&type=template&id=210dfea1& */ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=template&id=210dfea1&\");\n/* harmony import */ var _AppNavigationItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppNavigationItem.vue?vue&type=script&lang=js& */ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _AppNavigationItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppNavigationItem.vue?vue&type=style&index=0&lang=scss& */ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AppNavigationItem.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _AppNavigationItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _AppNavigationItem_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppNavigationItem/AppNavigationItem.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=custom&index=0&blockType=docs\":\n/*!*******************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=custom&index=0&blockType=docs ***!\n \\*******************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=script&lang=js&\":\n/*!*****************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=script&lang=js& ***!\n \\*****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationItem.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss&\":\n/*!**************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss& ***!\n \\**************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationItem.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=style&index=0&lang=scss&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=template&id=210dfea1&\":\n/*!***********************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=template&id=210dfea1& ***!\n \\***********************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./AppNavigationItem.vue?vue&type=template&id=210dfea1& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/AppNavigationItem.vue?vue&type=template&id=210dfea1&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationItem_vue_vue_type_template_id_210dfea1___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/InputConfirmCancel.vue\":\n/*!*****************************************************************!*\\\n !*** ./src/components/AppNavigationItem/InputConfirmCancel.vue ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InputConfirmCancel.vue?vue&type=template&id=185307b2& */ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=template&id=185307b2&\");\n/* harmony import */ var _InputConfirmCancel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InputConfirmCancel.vue?vue&type=script&lang=js& */ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _InputConfirmCancel_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InputConfirmCancel.vue?vue&type=style&index=0&lang=scss& */ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./InputConfirmCancel.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _InputConfirmCancel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _InputConfirmCancel_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/AppNavigationItem/InputConfirmCancel.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=custom&index=0&blockType=docs\":\n/*!********************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=custom&index=0&blockType=docs ***!\n \\********************************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=script&lang=js&\":\n/*!******************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=script&lang=js& ***!\n \\******************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./InputConfirmCancel.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss&\":\n/*!***************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss& ***!\n \\***************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./InputConfirmCancel.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=style&index=0&lang=scss&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=template&id=185307b2&\":\n/*!************************************************************************************************!*\\\n !*** ./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=template&id=185307b2& ***!\n \\************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./InputConfirmCancel.vue?vue&type=template&id=185307b2& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AppNavigationItem/InputConfirmCancel.vue?vue&type=template&id=185307b2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InputConfirmCancel_vue_vue_type_template_id_185307b2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/AppNavigationItem/index.js\":\n/*!***************************************************!*\\\n !*** ./src/components/AppNavigationItem/index.js ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppNavigationItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationItem */ \"./src/components/AppNavigationItem/AppNavigationItem.vue\");\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_AppNavigationItem__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue\":\n/*!********************************************!*\\\n !*** ./src/components/Popover/Popover.vue ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Popover.vue?vue&type=template&id=45093cca& */ \"./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\");\n/* harmony import */ var _Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Popover.vue?vue&type=script&lang=js& */ \"./src/components/Popover/Popover.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover.vue?vue&type=style&index=0&lang=scss& */ \"./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Popover.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Popover/Popover.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _Popover_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Popover/Popover.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=custom&index=0&blockType=docs\":\n/*!***********************************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=custom&index=0&blockType=docs ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\":\n/*!******************************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss& ***!\n \\******************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=style&index=0&lang=scss&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\":\n/*!***************************************************************************!*\\\n !*** ./src/components/Popover/Popover.vue?vue&type=template&id=45093cca& ***!\n \\***************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Popover.vue?vue&type=template&id=45093cca& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Popover/Popover.vue?vue&type=template&id=45093cca&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Popover_vue_vue_type_template_id_45093cca___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Popover/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/Popover/index.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Popover */ \"./src/components/Popover/Popover.vue\");\n/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Popover__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/directives/Tooltip/index.js\":\n/*!*****************************************!*\\\n !*** ./src/directives/Tooltip/index.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! v-tooltip */ \"v-tooltip\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(v_tooltip__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.scss */ \"./src/directives/Tooltip/index.scss\");\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n // force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\n\nv_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VTooltip\"].options.defaultTemplate = \"<div class=\\\"vue-tooltip\\\" role=\\\"tooltip\\\" data-v-\".concat(\"84c461f\", \"><div class=\\\"tooltip-arrow\\\"></div><div class=\\\"tooltip-inner\\\"></div></div>\");\nv_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VTooltip\"].options.defaultHtml = false;\n/* harmony default export */ __webpack_exports__[\"default\"] = (v_tooltip__WEBPACK_IMPORTED_MODULE_0__[\"VTooltip\"]);\n\n/***/ }),\n\n/***/ \"./src/directives/Tooltip/index.scss\":\n/*!*******************************************!*\\\n !*** ./src/directives/Tooltip/index.scss ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./src/directives/Tooltip/index.scss\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_index_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.eot\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.eot ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:application/vnd.ms-fontobject;base64,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\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.svg\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.svg ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlLTg0YzQ2MWYiIGhvcml6LWFkdi14PSI1MDAwIj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJpY29uZm9udC12dWUtODRjNDYxZiIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zdHJldGNoPSJub3JtYWwiIHVuaXRzLXBlci1lbT0iNTAwMCIgcGFub3NlLTE9IjIgMCA1IDMgMCAwIDAgMCAwIDAiIGFzY2VudD0iNTAwMCIgZGVzY2VudD0iMCIgeC1oZWlnaHQ9IjAiIGJib3g9Ii0zMiAwIDUwMTEgNTAwMCIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iMCIgdW5kZXJsaW5lLXBvc2l0aW9uPSI1MCIgdW5pY29kZS1yYW5nZT0iVStlYTAxLWVhMTIiIC8+PG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjAiICAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0LWRvdWJsZSIgdW5pY29kZT0iJiN4ZWEwMTsiIGQ9Ik0zNzUwIDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaTTIzNDQgMzkwNiBsLTE0MDYgLTE0MDYgbDE0MDYgLTE0MDYgbDAgMzEyIGwtMTA5NCAxMDk0IGwxMDk0IDEwOTQgbDAgMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQiIHVuaWNvZGU9IiYjeGVhMDI7IiBkPSJNMTU2MyAyNTAwIGwxODc1IC0xODc1IGwwIC0zMTIgbC0yMTg4IDIxODcgbDIxODggMjE4OCBsMCAtMzEzIGwtMTg3NSAtMTg3NSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1yaWdodC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDM7IiBkPSJNMTI1MCAxMDk0IGwxNDA2IDE0MDYgbC0xNDA2IDE0MDYgbDAgLTMxMiBsMTA5NCAtMTA5NCBsLTEwOTQgLTEwOTQgbDAgLTMxMiBaTTI2NTYgMTA5NCBsMTQwNyAxNDA2IGwtMTQwNyAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQiIHVuaWNvZGU9IiYjeGVhMDQ7IiBkPSJNMzQzOCAyNTAwIGwtMTg3NSAxODc1IGwwIDMxMyBsMjE4NyAtMjE4OCBsLTIxODcgLTIxODcgbDAgMzEyIGwxODc1IDE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYnJlYWRjcnVtYiIgdW5pY29kZT0iJiN4ZWEwNTsiIGQ9Ik0xNDggNTAwMCBsLTE0OCAtODUgbDEzOTQgLTI0MTUgbC0xMzk0IC0yNDE1IGwxNDggLTg1IGwxNDQzIDI1MDAgbC0xNDQzIDI1MDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2ttYXJrIiB1bmljb2RlPSImI3hlYTA2OyIgZD0iTTQwNDUgMzk3MSBsLTIwNjEgLTIwNjEgbC0xMDI5IDEwMjkgbC00NDIgLTQ0MSBsMTQ3MSAtMTQ3MSBsMjUwMyAyNTAyIGwtNDQyIDQ0MiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJjbG9zZSIgdW5pY29kZT0iJiN4ZWEwNzsiIGQ9Ik00Mzc1IDExNTYgbC01MzEgLTUzMSBsLTEzNDQgMTM0NCBsLTEzNDQgLTEzNDQgbC01MzEgNTMxIGwxMzQ0IDEzNDQgbC0xMzQ0IDEzNDQgbDUzMSA1MzEgbDEzNDQgLTEzNDQgbDEzNDQgMTM0NCBsNTMxIC01MzEgbC0xMzQ0IC0xMzQ0IGwxMzQ0IC0xMzQ0IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNvbmZpcm0iIHVuaWNvZGU9IiYjeGVhMDg7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJpbmZvIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTI0MjIgNDY4OCBxLTExMSAwIC0yMTMgLTQzIHEtOTggLTQyIC0xNzQgLTExNy41IHEtNzYgLTc1LjUgLTExNyAtMTc0LjUgcS00MyAtMTAxIC00MyAtMjEyLjUgcTAgLTExMS41IDQzIC0yMTIuNSBxNDEgLTk4IDExNyAtMTc0IHE3NiAtNzYgMTc0IC0xMTcgcTEwMiAtNDMgMjEzIC00MyBxMTExIDAgMjEzIDQzIHE5OCA0MSAxNzMuNSAxMTcgcTc1LjUgNzYgMTE3LjUgMTc0IHE0MyAxMDEgNDMgMjEyLjUgcTAgMTExLjUgLTQzIDIxMi41IHEtNDIgOTkgLTExNy41IDE3NC41IHEtNzUuNSA3NS41IC0xNzMuNSAxMTcuNSBxLTEwMiA0MyAtMjEzIDQzIFpNMTU2MyAzMTI1IHEtODYgMCAtMTU4IC00MyBxLTcxIC00MSAtMTEyIC0xMTIgcS00MyAtNzIgLTQzIC0xNTcuNSBxMCAtODUuNSA0MyAtMTU3LjUgcTQxIC03MSAxMTIgLTExMiBxNzIgLTQzIDE1OCAtNDMgbDYyNSAwIGwwIC0xNTYyIGwtNjI1IDAgcS04NiAwIC0xNTggLTQzIHEtNzEgLTQxIC0xMTIgLTExMiBxLTQzIC03MyAtNDMgLTE1OCBxMCAtODUgNDMgLTE1OCBxNDEgLTcxIDExMiAtMTEyIHE3MiAtNDMgMTU4IC00MiBsMTg3NSAwIHE4NSAwIDE1NyA0MiBxNzEgNDEgMTEyIDExMiBxNDMgNzMgNDMgMTU4IHEwIDg1IC00MyAxNTggcS00MSA3MSAtMTEyIDExMiBxLTcyIDQzIC0xNTcgNDMgbC02MjUgMCBsMCAxODc1IHEwIDg1IC00MyAxNTcgcS00MSA3MSAtMTEyIDExMiBxLTczIDQzIC0xNTggNDMgbC05MzcgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTBiOyIgZD0iTTc4MSAzMDQ3IHExMTIgMCAyMTMgLTQzIHE5OCAtNDIgMTc0IC0xMTcuNSBxNzYgLTc1LjUgMTE3IC0xNzMuNSBxNDMgLTEwMiA0MyAtMjEzIHEwIC0xMTEgLTQzIC0yMTMgcS00MSAtOTggLTExNyAtMTczLjUgcS03NiAtNzUuNSAtMTc0IC0xMTcuNSBxLTEwMSAtNDMgLTIxMi41IC00MyBxLTExMS41IDAgLTIxMy41IDQzIHEtOTggNDIgLTE3My41IDExNy41IHEtNzUuNSA3NS41IC0xMTcuNSAxNzMuNSBxLTQzIDEwMiAtNDMgMjEzIHEwIDExMSA0MyAyMTMgcTQyIDk4IDExNy41IDE3My41IHE3NS41IDc1LjUgMTczLjUgMTE3LjUgcTEwMiA0MyAyMTMgNDMgWk0yNTAwIDMwNDcgcTExMSAwIDIxMyAtNDMgcTk4IC00MiAxNzMuNSAtMTE3LjUgcTc1LjUgLTc1LjUgMTE3LjUgLTE3My41IHE0MyAtMTAyIDQzIC0yMTMgcTAgLTExMSAtNDMgLTIxMyBxLTQyIC05OCAtMTE3LjUgLTE3My41IHEtNzUuNSAtNzUuNSAtMTczLjUgLTExNy41IHEtMTAyIC00MyAtMjEzIC00MyBxLTExMSAwIC0yMTMgNDMgcS05OCA0MiAtMTczLjUgMTE3LjUgcS03NS41IDc1LjUgLTExNy41IDE3My41IHEtNDMgMTAyIC00MyAyMTMgcTAgMTExIDQzIDIxMyBxNDIgOTggMTE3LjUgMTczLjUgcTc1LjUgNzUuNSAxNzMuNSAxMTcuNSBxMTAyIDQzIDIxMyA0MyBaTTQyMTkgMzA0NyBxMTExIDAgMjEzIC00MyBxOTggLTQyIDE3My41IC0xMTcuNSBxNzUuNSAtNzUuNSAxMTcuNSAtMTczLjUgcTQzIC0xMDIgNDMgLTIxMyBxMCAtMTExIC00MyAtMjEzIHEtNDIgLTk4IC0xMTcuNSAtMTczLjUgcS03NS41IC03NS41IC0xNzMuNSAtMTE3LjUgcS0xMDIgLTQzIC0yMTMuNSAtNDMgcS0xMTEuNSAwIC0yMTIuNSA0MyBxLTk4IDQyIC0xNzQgMTE3LjUgcS03NiA3NS41IC0xMTcgMTczLjUgcS00MyAxMDIgLTQzIDIxMyBxMCAxMTEgNDMgMjEzIHE0MSA5OCAxMTcgMTczLjUgcTc2IDc1LjUgMTc0IDExNy41IHExMDEgNDMgMjEzIDQzIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBjOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwZDsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJ0cmlhbmdsZS1zIiB1bmljb2RlPSImI3hlYTBlOyIgZD0iTTEyNTAgMzEyNSBsMTI1MCAtMTI1MCBsMTI1MCAxMjQ4IGwtMjUwMCAyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWF3YXkiIHVuaWNvZGU9IiYjeGVhMGY7IiBkPSJNMjE1NiA0OTY5IHEtMzYwIC00NiAtNjk1IC0xOTcgcS0zMjYgLTE0NyAtNjAxIC0zODAgcS0yNzQgLTIzMSAtNDcyIC01MjggcS0yMDIgLTMwMSAtMzA5IC02NDIgcS0xMTAgLTM1MyAtMTEwIC03MjIgcTAgLTQwNiAxMjggLTc4OCBxMTIzIC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTM2OSAwIDcyMiAxMDcgcTM0MiAxMDQgNjQ0IDMwMSBxMjk4IDE5NCA1MzMgNDYzIHEyMzYgMjcwIDM4OSA1OTMgcTE1NiAzMzEgMjEyIDY5MiBxLTE4OCAtMjA0IC00MjMuNSAtMzUxIHEtMjM1LjUgLTE0NyAtNDk4LjUgLTIyNSBxLTI2OSAtODAgLTU0NyAtODAgcS0zMjIgMCAtNjI4IDEwMyBxLTI5NSA5OSAtNTQ4IDI4NiBxLTI1MSAxODQgLTQzNSA0MzUgcS0xODcgMjUzIC0yODYgNTQ4IHEtMTAzIDMwNiAtMTAzIDYyOCBxMCAyOTMgODAgNTY4IHE3OCAyNjkgMjI1LjUgNDk4LjUgcTE0Ny41IDIyOS41IDM1MC41IDQwMi41IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWRuZCIgdW5pY29kZT0iJiN4ZWExMDsiIGQ9Ik0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFpNMTU2MyAyOTY5IGwxODc1IDAgcTkxIDAgMTc4IC0zOCBxODQgLTM3IDE1MCAtMTAzIHE2NiAtNjYgMTAyIC0xNDkgcTM4IC04NyAzOCAtMTc5IHEwIC05MiAtMzggLTE3OSBxLTM2IC04MyAtMTAyIC0xNDkgcS02NiAtNjYgLTE1MCAtMTAzIHEtODcgLTM4IC0xNzggLTM4IGwtMTg3NSAwIHEtOTIgMCAtMTc5IDM4IHEtODQgMzcgLTE1MCAxMDMgcS02NiA2NiAtMTAyIDE0OSBxLTM4IDg3IC0zOCAxNzkgcTAgOTIgMzggMTc5IHEzNiA4MyAxMDIgMTQ5IHE2NiA2NiAxNTAgMTAzIHE4NyAzOCAxNzkgMzggWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtaW52aXNpYmxlIiB1bmljb2RlPSImI3hlYTExOyIgZD0iTTI1MDAgNTAwMCBxLTQwNiAwIC03ODggLTEyOCBxLTM3MCAtMTI0IC02ODYgLTM1NiBxLTMxMyAtMjI5IC01NDIgLTU0MiBxLTIzMiAtMzE2IC0zNTYgLTY4NiBxLTEyOCAtMzgyIC0xMjggLTc4OCBxMCAtNDA2IDEyOCAtNzg4IHExMjQgLTM3MCAzNTYgLTY4NiBxMjI5IC0zMTMgNTQyIC01NDIgcTMxNiAtMjMyIDY4NiAtMzU2IHEzODIgLTEyOCA3ODggLTEyOCBxNDA2IDAgNzg4IDEyOCBxMzcwIDEyNCA2ODYgMzU2IHEzMTMgMjI5IDU0MiA1NDIgcTIzMiAzMTYgMzU2IDY4NiBxMTI4IDM4MiAxMjggNzg4IHEwIDQwNiAtMTI4IDc4OCBxLTEyNCAzNzAgLTM1NiA2ODYgcS0yMjkgMzEzIC01NDIgNTQyIHEtMzE2IDIzMiAtNjg2IDM1NiBxLTM4MiAxMjggLTc4OCAxMjggWk0yNTAwIDQwMDAgcTMxMSAwIDU5MCAtMTE2IHEyNzEgLTExMiA0NzYuNSAtMzE3LjUgcTIwNS41IC0yMDUuNSAzMTcuNSAtNDc2LjUgcTExNiAtMjc5IDExNiAtNTkwIHEwIC0zMTEgLTExNiAtNTkwIHEtMTEyIC0yNzEgLTMxNy41IC00NzYuNSBxLTIwNS41IC0yMDUuNSAtNDc2LjUgLTMxNy41IHEtMjc5IC0xMTYgLTU5MCAtMTE2IHEtMzExIDAgLTU5MCAxMTYgcS0yNzEgMTEyIC00NzYuNSAzMTcuNSBxLTIwNS41IDIwNS41IC0zMTcuNSA0NzYuNSBxLTExNiAyNzkgLTExNiA1OTAgcTAgMzExIDExNiA1OTAgcTExMiAyNzEgMzE3LjUgNDc2LjUgcTIwNS41IDIwNS41IDQ3Ni41IDMxNy41IHEyNzkgMTE2IDU5MCAxMTYgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtb25saW5lIiB1bmljb2RlPSImI3hlYTEyOyIgZD0iTTE1MDAgMTUwMCBsMjAwMCAwIGwwIDIwMDAgbC0yMDAwIDAgbDAgLTIwMDAgWk0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFoiIC8+PC9mb250PjwvZGVmcz48L3N2Zz4=\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.ttf\":\n/*!********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.ttf ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/ttf;base64,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AAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtODRjNDYxZlJlZ3VsYXJpY29uZm9udC12dWUtODRjNDYxZmljb25mb250LXZ1ZS04NGM0NjFmVmVyc2lvbiAxLjBpY29uZm9udC12dWUtODRjNDYxZkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADgANABjADQANgAxAGYAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\");\n\n/***/ }),\n\n/***/ \"./src/fonts/iconfont-vue-84c461f.woff\":\n/*!*********************************************!*\\\n !*** ./src/fonts/iconfont-vue-84c461f.woff ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff;base64,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PAE55eh8gAAAAQAAAAEAAD/s/DtfDzz1AAsTiAAAAADc1Uf1AAAAANyEa/X/4AAAE5MTiAAAAAgAAgAAAAAAAAABAAATiAAAAAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtODRjNDYxZlJlZ3VsYXJpY29uZm9udC12dWUtODRjNDYxZmljb25mb250LXZ1ZS04NGM0NjFmVmVyc2lvbiAxLjBpY29uZm9udC12dWUtODRjNDYxZkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADgANABjADQANgAxAGYAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AOAA0AGMANAA2ADEAZgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\");\n\n/***/ }),\n\n/***/ \"./src/l10n.js\":\n/*!*********************!*\\\n !*** ./src/l10n.js ***!\n \\*********************/\n/*! exports provided: t, n */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return t; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return n; });\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n/dist/gettext */ \"@nextcloud/l10n/dist/gettext\");\n/* harmony import */ var _nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar gtBuilder = Object(_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_1__[\"getGettextBuilder\"])().detectLocale(); // Decompress Translations to gettext format and add to gtBuilder\n\n[{\"locale\":\"br\",\"translations\":{\"{tag} (invisible)\":\"{tag} (diwelus)\",\"{tag} (restricted)\":\"{tag} (bevennet)\",\"Actions\":\"Oberioù\",\"Activities\":\"Oberiantizoù\",\"Animals & Nature\":\"Loened & Natur\",\"Choose\":\"Dibab\",\"Close\":\"Serriñ\",\"Custom\":\"Personelañ\",\"Flags\":\"Bannieloù\",\"Food & Drink\":\"Boued & Evajoù\",\"Frequently used\":\"Implijet alies\",\"Next\":\"Da heul\",\"No emoji found\":\"Emoji ebet kavet\",\"No results\":\"Disoc'h ebet\",\"Objects\":\"Traoù\",\"Pause slideshow\":\"Arsav an diaporama\",\"People & Body\":\"Tud & Korf\",\"Pick an emoji\":\"Choaz un emoji\",\"Previous\":\"A-raok\",\"Search\":\"Klask\",\"Search results\":\"Disoc'hoù an enklask\",\"Select a tag\":\"Choaz ur c'hlav\",\"Settings\":\"Arventennoù\",\"Smileys & Emotion\":\"Smileyioù & Fromoù\",\"Start slideshow\":\"Kregiñ an diaporama\",\"Symbols\":\"Arouezioù\",\"Travel & Places\":\"Beaj & Lec'hioù\",\"Unable to search the group\":\"Dibosupl eo klask ar strollad\"}},{\"locale\":\"ca\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringit)\",\"Actions\":\"Accions\",\"Activities\":\"Activitats\",\"Animals & Nature\":\"Animals i natura\",\"Choose\":\"Tria\",\"Close\":\"Tanca\",\"Custom\":\"Personalitzat\",\"Flags\":\"Marques\",\"Food & Drink\":\"Menjar i begudes\",\"Frequently used\":\"Utilitzats recentment\",\"Message limit of {count} characters reached\":\"S'ha arribat al límit de {count} caràcters per missatge\",\"Next\":\"Següent\",\"No emoji found\":\"No s'ha trobat cap emoji\",\"No results\":\"Sense resultats\",\"Objects\":\"Objectes\",\"Pause slideshow\":\"Atura la presentació\",\"People & Body\":\"Persones i cos\",\"Pick an emoji\":\"Trieu un emoji\",\"Previous\":\"Anterior\",\"Search\":\"Cerca\",\"Search results\":\"Resultats de cerca\",\"Select a tag\":\"Selecciona una etiqueta\",\"Settings\":\"Paràmetres\",\"Settings navigation\":\"Navegació d'opcions\",\"Smileys & Emotion\":\"Cares i emocions\",\"Start slideshow\":\"Inicia la presentació\",\"Symbols\":\"Símbols\",\"Travel & Places\":\"Viatges i llocs\",\"Unable to search the group\":\"No es pot cercar el grup\",\"Write message, @ to mention someone …\":\"Escriu un missatge, @ per mencionar algú...\"}},{\"locale\":\"cs_CZ\",\"translations\":{\"{tag} (invisible)\":\"{tag} (neviditelné)\",\"{tag} (restricted)\":\"{tag} (omezené)\",\"Actions\":\"Akce\",\"Activities\":\"Aktivity\",\"Animals & Nature\":\"Zvířata a příroda\",\"Choose\":\"Zvolit\",\"Close\":\"Zavřít\",\"Custom\":\"Uživatelsky určené\",\"External documentation for {title}\":\"Externí dokumentace k {title}\",\"Flags\":\"Příznaky\",\"Food & Drink\":\"Jídlo a pití\",\"Frequently used\":\"Často používané\",\"Message limit of {count} characters reached\":\"Dosaženo limitu počtu ({count}) znaků zprávy\",\"Next\":\"Následující\",\"No emoji found\":\"Nenalezeno žádné emoji\",\"No results\":\"Nic nenalezeno\",\"Objects\":\"Objekty\",\"Pause slideshow\":\"Pozastavit prezentaci\",\"People & Body\":\"Lidé a tělo\",\"Pick an emoji\":\"Vybrat emoji\",\"Previous\":\"Předchozí\",\"Search\":\"Hledat\",\"Search results\":\"Výsledky hledání\",\"Select a tag\":\"Vybrat štítek\",\"Settings\":\"Nastavení\",\"Settings navigation\":\"Pohyb po nastavení\",\"Smileys & Emotion\":\"Úsměvy a emoce\",\"Start slideshow\":\"Spustit prezentaci\",\"Submit\":\"Odeslat\",\"Symbols\":\"Symboly\",\"Travel & Places\":\"Cestování a místa\",\"Unable to search the group\":\"Nedaří se hledat skupinu\",\"Write message, @ to mention someone …\":\"Pište zprávu, pokud chcete někoho zmínit, použijte @ …\"}},{\"locale\":\"da\",\"translations\":{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (begrænset)\",\"Actions\":\"Handlinger\",\"Activities\":\"Aktiviteter\",\"Animals & Nature\":\"Dyr & Natur\",\"Choose\":\"Vælg\",\"Close\":\"Luk\",\"Custom\":\"Brugerdefineret\",\"Flags\":\"Flag\",\"Food & Drink\":\"Mad & Drikke\",\"Frequently used\":\"Ofte brugt\",\"Message limit of {count} characters reached\":\"Begrænsning på {count} tegn er nået\",\"Next\":\"Videre\",\"No emoji found\":\"Ingen emoji fundet\",\"No results\":\"Ingen resultater\",\"Objects\":\"Objekter\",\"Pause slideshow\":\"Suspender fremvisning\",\"People & Body\":\"Mennesker & Menneskekroppen\",\"Pick an emoji\":\"Vælg en emoji\",\"Previous\":\"Forrige\",\"Search\":\"Søg\",\"Search results\":\"Søgeresultater\",\"Select a tag\":\"Vælg et mærke\",\"Settings\":\"Indstillinger\",\"Settings navigation\":\"Naviger i indstillinger\",\"Smileys & Emotion\":\"Smileys & Emotion\",\"Start slideshow\":\"Start fremvisning\",\"Symbols\":\"Symboler\",\"Travel & Places\":\"Rejser & Rejsemål\",\"Unable to search the group\":\"Kan ikke søge på denne gruppe\",\"Write message, @ to mention someone …\":\"Skriv i meddelelse, @ for at nævne nogen …\"}},{\"locale\":\"de\",\"translations\":{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",\"Actions\":\"Aktionen\",\"Activities\":\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Choose\":\"Auswählen\",\"Close\":\"Schließen\",\"Custom\":\"Benutzerdefiniert\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",\"Flags\":\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"Next\":\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",\"Objects\":\"Gegenstände\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Previous\":\"Vorherige\",\"Search\":\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",\"Settings\":\"Einstellungen\",\"Settings navigation\":\"Einstellungen-Navigation\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",\"Submit\":\"Einreichen\",\"Symbols\":\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Unable to search the group\":\"Die Gruppe konnte nicht durchsucht werden\",\"Write message, @ to mention someone …\":\"Nachricht schreiben, @ um jemanden zu erwähnen ...\"}},{\"locale\":\"de_DE\",\"translations\":{\"{tag} (invisible)\":\"{tag} (unsichtbar)\",\"{tag} (restricted)\":\"{tag} (eingeschränkt)\",\"Actions\":\"Aktionen\",\"Activities\":\"Aktivitäten\",\"Animals & Nature\":\"Tiere & Natur\",\"Choose\":\"Auswählen\",\"Close\":\"Schließen\",\"Custom\":\"Benutzerdefiniert\",\"External documentation for {title}\":\"Externe Dokumentation für {title}\",\"Flags\":\"Flaggen\",\"Food & Drink\":\"Essen & Trinken\",\"Frequently used\":\"Häufig verwendet\",\"Message limit of {count} characters reached\":\"Nachrichtenlimit von {count} Zeichen erreicht\",\"Next\":\"Weiter\",\"No emoji found\":\"Kein Emoji gefunden\",\"No results\":\"Keine Ergebnisse\",\"Objects\":\"Gegenstände\",\"Pause slideshow\":\"Diashow pausieren\",\"People & Body\":\"Menschen & Körper\",\"Pick an emoji\":\"Ein Emoji auswählen\",\"Previous\":\"Vorherige\",\"Search\":\"Suche\",\"Search results\":\"Suchergebnisse\",\"Select a tag\":\"Schlagwort auswählen\",\"Settings\":\"Einstellungen\",\"Settings navigation\":\"Einstellungen-Navigation\",\"Smileys & Emotion\":\"Smileys & Emotionen\",\"Start slideshow\":\"Diashow starten\",\"Submit\":\"Einreichen\",\"Symbols\":\"Symbole\",\"Travel & Places\":\"Reisen & Orte\",\"Unable to search the group\":\"Die Gruppe kann nicht durchsucht werden\",\"Write message, @ to mention someone …\":\"Nachricht schreiben, @ um jemanden zu erwähnen ...\"}},{\"locale\":\"el\",\"translations\":{\"{tag} (invisible)\":\"{tag} (αόρατο)\",\"{tag} (restricted)\":\"{tag} (περιορισμένο)\",\"Actions\":\"Ενέργειες\",\"Activities\":\"Δραστηριότητες\",\"Animals & Nature\":\"Ζώα & Φύση\",\"Choose\":\"Επιλογή\",\"Close\":\"Κλείσιμο\",\"Custom\":\"Προσαρμογή\",\"Flags\":\"Σημαίες\",\"Food & Drink\":\"Φαγητό & Ποτό\",\"Frequently used\":\"Συχνά χρησιμοποιούμενο\",\"Next\":\"Επόμενο\",\"No emoji found\":\"Δεν βρέθηκε emoji\",\"No results\":\"Κανένα αποτέλεσμα\",\"Objects\":\"Αντικείμενα\",\"Pause slideshow\":\"Παύση προβολής διαφανειών\",\"People & Body\":\"Άνθρωποι & Σώμα\",\"Pick an emoji\":\"Επιλέξτε ένα emoji\",\"Previous\":\"Προηγούμενο\",\"Search\":\"Αναζήτηση\",\"Search results\":\"Αποτελέσματα αναζήτησης\",\"Select a tag\":\"Επιλογή ετικέτας\",\"Settings\":\"Ρυθμίσεις\",\"Smileys & Emotion\":\"Φατσούλες & Συναίσθημα\",\"Start slideshow\":\"Έναρξη προβολής διαφανειών\",\"Symbols\":\"Σύμβολα\",\"Travel & Places\":\"Ταξίδια & Τοποθεσίες\",\"Unable to search the group\":\"Δεν είναι δυνατή η αναζήτηση της ομάδας\"}},{\"locale\":\"eo\",\"translations\":{\"{tag} (invisible)\":\"{tag} (kaŝita)\",\"{tag} (restricted)\":\"{tag} (limigita)\",\"Actions\":\"Agoj\",\"Activities\":\"Aktiveco\",\"Animals & Nature\":\"Bestoj & Naturo\",\"Choose\":\"Elektu\",\"Close\":\"Fermu\",\"Custom\":\"Propra\",\"Flags\":\"Flagoj\",\"Food & Drink\":\"Manĝaĵo & Trinkaĵo\",\"Frequently used\":\"Ofte uzataj\",\"Message limit of {count} characters reached\":\"La limo je {count} da literoj atingita\",\"Next\":\"Sekva\",\"No emoji found\":\"La emoĝio forestas\",\"No results\":\"La rezulto forestas\",\"Objects\":\"Objektoj\",\"Pause slideshow\":\"Payzi bildprezenton\",\"People & Body\":\"Homoj & Korpo\",\"Pick an emoji\":\"Elekti emoĝion \",\"Previous\":\"Antaŭa\",\"Search\":\"Serĉi\",\"Search results\":\"Serĉrezultoj\",\"Select a tag\":\"Elektu etikedon\",\"Settings\":\"Agordo\",\"Settings navigation\":\"Agorda navigado\",\"Smileys & Emotion\":\"Ridoj kaj Emocioj\",\"Start slideshow\":\"Komenci bildprezenton\",\"Symbols\":\"Signoj\",\"Travel & Places\":\"Vojaĵoj & Lokoj\",\"Unable to search the group\":\"Ne eblas serĉi en la grupo\",\"Write message, @ to mention someone …\":\"Mesaĝi, uzu @ por mencii iun ...\"}},{\"locale\":\"es\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restringido)\",\"Actions\":\"Acciones\",\"Activities\":\"Actividades\",\"Animals & Nature\":\"Animales y naturaleza\",\"Choose\":\"Elegir\",\"Close\":\"Cerrar\",\"Custom\":\"Personalizado\",\"Flags\":\"Banderas\",\"Food & Drink\":\"Comida y bebida\",\"Frequently used\":\"Usado con frecuenca\",\"Message limit of {count} characters reached\":\"El mensaje ha alcanzado el límite de {count} caracteres\",\"Next\":\"Siguiente\",\"No emoji found\":\"No hay ningún emoji\",\"No results\":\" Ningún resultado\",\"Objects\":\"Objetos\",\"Pause slideshow\":\"Pausar la presentación \",\"People & Body\":\"Personas y cuerpos\",\"Pick an emoji\":\"Elegir un emoji\",\"Previous\":\"Anterior\",\"Search\":\"Buscar\",\"Search results\":\"Resultados de la búsqueda\",\"Select a tag\":\"Seleccione una etiqueta\",\"Settings\":\"Ajustes\",\"Settings navigation\":\"Navegación por ajustes\",\"Smileys & Emotion\":\"Smileys y emoticonos\",\"Start slideshow\":\"Iniciar la presentación\",\"Symbols\":\"Símbolos\",\"Travel & Places\":\"Viajes y lugares\",\"Unable to search the group\":\"No es posible buscar en el grupo\",\"Write message, @ to mention someone …\":\"Escriba un mensaje, @ para mencionar a alguien...\"}},{\"locale\":\"eu\",\"translations\":{\"{tag} (invisible)\":\"{tag} (ikusezina)\",\"{tag} (restricted)\":\"{tag} (mugatua)\",\"Choose\":\"Aukeratu\",\"Close\":\"Itxi\",\"Next\":\"Hurrengoa\",\"No results\":\"Emaitzarik ez\",\"Pause slideshow\":\"Pausatu diaporama\",\"Previous\":\"Aurrekoa\",\"Select a tag\":\"Hautatu etiketa bat\",\"Settings\":\"Ezarpenak\",\"Start slideshow\":\"Hasi diaporama\"}},{\"locale\":\"fi_FI\",\"translations\":{\"{tag} (invisible)\":\"{tag} (näkymätön)\",\"{tag} (restricted)\":\"{tag} (rajoitettu)\",\"Actions\":\"Toiminnot\",\"Activities\":\"Aktiviteetit\",\"Animals & Nature\":\"Eläimet & luonto\",\"Choose\":\"Valitse\",\"Close\":\"Sulje\",\"Custom\":\"Mukautettu\",\"Flags\":\"Liput\",\"Food & Drink\":\"Ruoka & juoma\",\"Frequently used\":\"Usein käytetyt\",\"Message limit of {count} characters reached\":\"Viestin maksimimerkkimäärä {count} täynnä \",\"Next\":\"Seuraava\",\"No emoji found\":\"Emojia ei löytynyt\",\"No results\":\"Ei tuloksia\",\"Objects\":\"Esineet & asiat\",\"Pause slideshow\":\"Keskeytä diaesitys\",\"People & Body\":\"Ihmiset & keho\",\"Pick an emoji\":\"Valitse emoji\",\"Previous\":\"Edellinen\",\"Search\":\"Etsi\",\"Search results\":\"Hakutulokset\",\"Select a tag\":\"Valitse tagi\",\"Settings\":\"Asetukset\",\"Settings navigation\":\"Asetusnavigaatio\",\"Smileys & Emotion\":\"Hymiöt ja & tunteet\",\"Start slideshow\":\"Aloita diaesitys\",\"Symbols\":\"Symbolit\",\"Travel & Places\":\"Matkustus & kohteet\",\"Unable to search the group\":\"Ryhmää ei voi hakea\",\"Write message, @ to mention someone …\":\"Kirjoita viesti, @ mainitaksesi jonkun...\"}},{\"locale\":\"fr\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restreint)\",\"Actions\":\"Actions\",\"Activities\":\"Activités\",\"Animals & Nature\":\"Animaux & Nature\",\"Choose\":\"Choisir\",\"Close\":\"Fermer\",\"Custom\":\"Personnalisé\",\"Flags\":\"Drapeaux\",\"Food & Drink\":\"Nourriture & Boissons\",\"Frequently used\":\"Utilisés fréquemment\",\"Message limit of {count} characters reached\":\"Limite de messages de {count} caractères atteinte\",\"Next\":\"Suivant\",\"No emoji found\":\"Pas d’émoji trouvé\",\"No results\":\"Aucun résultat\",\"Objects\":\"Objets\",\"Pause slideshow\":\"Mettre le diaporama en pause\",\"People & Body\":\"Personnes & Corps\",\"Pick an emoji\":\"Choisissez un émoji\",\"Previous\":\"Précédent\",\"Search\":\"Chercher\",\"Search results\":\"Résultats de recherche\",\"Select a tag\":\"Sélectionnez une balise\",\"Settings\":\"Paramètres\",\"Settings navigation\":\"Navigation dans les paramètres\",\"Smileys & Emotion\":\"Smileys & Émotions\",\"Start slideshow\":\"Démarrer le diaporama\",\"Symbols\":\"Symboles\",\"Travel & Places\":\"Voyage & Lieux\",\"Unable to search the group\":\"Impossible de chercher le groupe\",\"Write message, @ to mention someone …\":\"Écrivez un message, @ pour mentionner quelqu'un…\"}},{\"locale\":\"gl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisíbel)\",\"{tag} (restricted)\":\"{tag} (restrinxido)\",\"Actions\":\"Accións\",\"Activities\":\"Actividades\",\"Animals & Nature\":\"Animais e natureza\",\"Choose\":\"Escoller\",\"Close\":\"Pechar\",\"Custom\":\"Personalizado\",\"Flags\":\"Bandeiras\",\"Food & Drink\":\"Comida e bebida\",\"Frequently used\":\"Usado con frecuencia\",\"Message limit of {count} characters reached\":\"Acadouse o límite de {count} caracteres por mensaxe\",\"Next\":\"Seguinte\",\"No emoji found\":\"Non se atopou ningún «emoji»\",\"No results\":\"Sen resultados\",\"Objects\":\"Obxectos\",\"Pause slideshow\":\"Pausar o diaporama\",\"People & Body\":\"Persoas e corpo\",\"Pick an emoji\":\"Escolla un «emoji»\",\"Previous\":\"Anterir\",\"Search\":\"Buscar\",\"Search results\":\"Resultados da busca\",\"Select a tag\":\"Seleccione unha etiqueta\",\"Settings\":\"Axustes\",\"Settings navigation\":\"Navegación de axustes\",\"Smileys & Emotion\":\"Sorrisos e emocións\",\"Start slideshow\":\"Iniciar o diaporama\",\"Symbols\":\"Símbolos\",\"Travel & Places\":\"Viaxes e lugares\",\"Unable to search the group\":\"Non foi posíbel buscar o grupo\",\"Write message, @ to mention someone …\":\"Escriba a mensaxe, @ para mencionar a alguén…\"}},{\"locale\":\"he\",\"translations\":{\"{tag} (invisible)\":\"{tag} (נסתר)\",\"{tag} (restricted)\":\"{tag} (מוגבל)\",\"Actions\":\"פעולות\",\"Activities\":\"פעילויות\",\"Animals & Nature\":\"חיות וטבע\",\"Choose\":\"בחירה\",\"Close\":\"סגירה\",\"Custom\":\"בהתאמה אישית\",\"Flags\":\"דגלים\",\"Food & Drink\":\"מזון ומשקאות\",\"Frequently used\":\"בשימוש תדיר\",\"Next\":\"הבא\",\"No emoji found\":\"לא נמצא אמוג׳י\",\"No results\":\"אין תוצאות\",\"Objects\":\"חפצים\",\"Pause slideshow\":\"השהיית מצגת\",\"People & Body\":\"אנשים וגוף\",\"Pick an emoji\":\"נא לבחור אמוג׳י\",\"Previous\":\"הקודם\",\"Search\":\"חיפוש\",\"Search results\":\"תוצאות חיפוש\",\"Select a tag\":\"בחירת תגית\",\"Settings\":\"הגדרות\",\"Smileys & Emotion\":\"חייכנים ורגשונים\",\"Start slideshow\":\"התחלת המצגת\",\"Symbols\":\"סמלים\",\"Travel & Places\":\"טיולים ומקומות\",\"Unable to search the group\":\"לא ניתן לחפש בקבוצה\"}},{\"locale\":\"hu_HU\",\"translations\":{\"{tag} (invisible)\":\"{tag} (láthatatlan)\",\"{tag} (restricted)\":\"{tag} (korlátozott)\",\"Actions\":\"Műveletek\",\"Activities\":\"Tevékenységek\",\"Animals & Nature\":\"Állatok és természet\",\"Choose\":\"Válassszon\",\"Close\":\"Bezárás\",\"Custom\":\"Egyéni\",\"Flags\":\"Zászló\",\"Food & Drink\":\"Étel és ital\",\"Frequently used\":\"Gyakran használt\",\"Message limit of {count} characters reached\":\"{count} karakteres üzenetkorlát elérve\",\"Next\":\"Következő\",\"No emoji found\":\"Nem található emodzsi\",\"No results\":\"Nincs találat\",\"Objects\":\"Tárgyak\",\"Pause slideshow\":\"Diavetítés szüneteltetése\",\"People & Body\":\"Emberek és test\",\"Pick an emoji\":\"Válasszon egy emodzsit\",\"Previous\":\"Előző\",\"Search\":\"Keresés\",\"Search results\":\"Találatok\",\"Select a tag\":\"Válasszon címkét\",\"Settings\":\"Beállítások\",\"Settings navigation\":\"Navigáció a beállításokban\",\"Smileys & Emotion\":\"Mosolyok és érzelmek\",\"Start slideshow\":\"Diavetítés indítása\",\"Symbols\":\"Szimbólumok\",\"Travel & Places\":\"Utazás és helyek\",\"Unable to search the group\":\"A csoport nem kereshető\",\"Write message, @ to mention someone …\":\"Írjon üzenetet, @ valaki megemlítéséhez…\"}},{\"locale\":\"is\",\"translations\":{\"{tag} (invisible)\":\"{tag} (ósýnilegt)\",\"{tag} (restricted)\":\"{tag} (takmarkað)\",\"Actions\":\"Aðgerðir\",\"Activities\":\"Aðgerðir\",\"Animals & Nature\":\"Dýr og náttúra\",\"Choose\":\"Velja\",\"Close\":\"Loka\",\"Custom\":\"Sérsniðið\",\"Flags\":\"Flögg\",\"Food & Drink\":\"Matur og drykkur\",\"Frequently used\":\"Oftast notað\",\"Next\":\"Næsta\",\"No emoji found\":\"Ekkert tjáningartákn fannst\",\"No results\":\"Engar niðurstöður\",\"Objects\":\"Hlutir\",\"Pause slideshow\":\"Gera hlé á skyggnusýningu\",\"People & Body\":\"Fólk og líkami\",\"Pick an emoji\":\"Veldu tjáningartákn\",\"Previous\":\"Fyrri\",\"Search\":\"Leita\",\"Search results\":\"Leitarniðurstöður\",\"Select a tag\":\"Veldu merki\",\"Settings\":\"Stillingar\",\"Smileys & Emotion\":\"Broskallar og tilfinningar\",\"Start slideshow\":\"Byrja skyggnusýningu\",\"Symbols\":\"Tákn\",\"Travel & Places\":\"Staðir og ferðalög\",\"Unable to search the group\":\"Get ekki leitað í hópnum\"}},{\"locale\":\"it\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisibile)\",\"{tag} (restricted)\":\"{tag} (limitato)\",\"Actions\":\"Azioni\",\"Activities\":\"Attività\",\"Animals & Nature\":\"Animali e natura\",\"Choose\":\"Scegli\",\"Close\":\"Chiudi\",\"Custom\":\"Personalizzato\",\"External documentation for {title}\":\"Documentazione esterna per {title}\",\"Flags\":\"Bandiere\",\"Food & Drink\":\"Cibo e bevande\",\"Frequently used\":\"Usati di frequente\",\"Message limit of {count} characters reached\":\"Limite dei messaggi di {count} caratteri raggiunto\",\"Next\":\"Successivo\",\"No emoji found\":\"Nessun emoji trovato\",\"No results\":\"Nessun risultato\",\"Objects\":\"Oggetti\",\"Pause slideshow\":\"Presentazione in pausa\",\"People & Body\":\"Persone e corpo\",\"Pick an emoji\":\"Scegli un emoji\",\"Previous\":\"Precedente\",\"Search\":\"Cerca\",\"Search results\":\"Risultati di ricerca\",\"Select a tag\":\"Seleziona un'etichetta\",\"Settings\":\"Impostazioni\",\"Settings navigation\":\"Navigazione delle impostazioni\",\"Smileys & Emotion\":\"Faccine ed emozioni\",\"Start slideshow\":\"Avvia presentazione\",\"Submit\":\"Invia\",\"Symbols\":\"Simboli\",\"Travel & Places\":\"Viaggi e luoghi\",\"Unable to search the group\":\"Impossibile cercare il gruppo\",\"Write message, @ to mention someone …\":\"Scrivi messaggio, @ per menzionare qualcuno…\"}},{\"locale\":\"ja_JP\",\"translations\":{\"{tag} (invisible)\":\"{タグ} (不可視)\",\"{tag} (restricted)\":\"{タグ} (制限付)\",\"Actions\":\"操作\",\"Activities\":\"アクティビティ\",\"Animals & Nature\":\"動物と自然\",\"Choose\":\"選択\",\"Close\":\"閉じる\",\"Custom\":\"カスタム\",\"Flags\":\"国旗\",\"Food & Drink\":\"食べ物と飲み物\",\"Frequently used\":\"よく使うもの\",\"Message limit of {count} characters reached\":\"{count} 文字のメッセージ上限に達しています\",\"Next\":\"次\",\"No emoji found\":\"絵文字が見つかりません\",\"No results\":\"なし\",\"Objects\":\"物\",\"Pause slideshow\":\"スライドショーを一時停止\",\"People & Body\":\"様々な人と体の部位\",\"Pick an emoji\":\"絵文字を選択\",\"Previous\":\"前\",\"Search\":\"検索\",\"Search results\":\"検索結果\",\"Select a tag\":\"タグを選択\",\"Settings\":\"設定\",\"Settings navigation\":\"ナビゲーション設定\",\"Smileys & Emotion\":\"笑顔と気持ち\",\"Start slideshow\":\"スライドショーを開始\",\"Symbols\":\"記号\",\"Travel & Places\":\"旅行と場所\",\"Unable to search the group\":\"グループを検索できません\",\"Write message, @ to mention someone …\":\"メッセージを書く、@ で通知します。\"}},{\"locale\":\"lt_LT\",\"translations\":{\"{tag} (invisible)\":\"{tag} (nematoma)\",\"{tag} (restricted)\":\"{tag} (apribota)\",\"Actions\":\"Veiksmai\",\"Activities\":\"Veiklos\",\"Animals & Nature\":\"Gyvūnai ir gamta\",\"Choose\":\"Pasirinkti\",\"Close\":\"Užverti\",\"Custom\":\"Tinkinti\",\"External documentation for {title}\":\"Išorinė {title} dokumentacija\",\"Flags\":\"Vėliavos\",\"Food & Drink\":\"Maistas ir gėrimai\",\"Frequently used\":\"Dažniausiai naudoti\",\"Message limit of {count} characters reached\":\"Pasiekta {count} simbolių žinutės riba\",\"Next\":\"Kitas\",\"No emoji found\":\"Nerasta jaustukų\",\"No results\":\"Nėra rezultatų\",\"Objects\":\"Objektai\",\"Pause slideshow\":\"Pristabdyti skaidrių rodymą\",\"People & Body\":\"Žmonės ir kūnas\",\"Pick an emoji\":\"Pasirinkti jaustuką\",\"Previous\":\"Ankstesnis\",\"Search\":\"Ieškoti\",\"Search results\":\"Paieškos rezultatai\",\"Select a tag\":\"Pasirinkti žymę\",\"Settings\":\"Nustatymai\",\"Settings navigation\":\"Naršymas nustatymuose\",\"Smileys & Emotion\":\"Šypsenos ir emocijos\",\"Start slideshow\":\"Pradėti skaidrių rodymą\",\"Submit\":\"Pateikti\",\"Symbols\":\"Simboliai\",\"Travel & Places\":\"Kelionės ir vietos\",\"Unable to search the group\":\"Nepavyko atlikti paiešką grupėje\",\"Write message, @ to mention someone …\":\"Rašykite žinutę, naudokite @ norėdami kažką paminėti…\"}},{\"locale\":\"lv\",\"translations\":{\"{tag} (invisible)\":\"{tag} (neredzams)\",\"{tag} (restricted)\":\"{tag} (ierobežots)\",\"Choose\":\"Izvēlēties\",\"Close\":\"Aizvērt\",\"Next\":\"Nākamais\",\"No results\":\"Nav rezultātu\",\"Pause slideshow\":\"Pauzēt slaidrādi\",\"Previous\":\"Iepriekšējais\",\"Select a tag\":\"Izvēlēties birku\",\"Settings\":\"Iestatījumi\",\"Start slideshow\":\"Sākt slaidrādi\"}},{\"locale\":\"mk\",\"translations\":{\"{tag} (invisible)\":\"{tag} (невидливо)\",\"{tag} (restricted)\":\"{tag} (ограничено)\",\"Actions\":\"Акции\",\"Activities\":\"Активности\",\"Animals & Nature\":\"Животни & Природа\",\"Choose\":\"Избери\",\"Close\":\"Затвори\",\"Custom\":\"Прилагодени\",\"Flags\":\"Знамиња\",\"Food & Drink\":\"Храна & Пијалоци\",\"Frequently used\":\"Најчесто користени\",\"Message limit of {count} characters reached\":\"Ограничувањето на должината на пораката од {count} карактери е надминато\",\"Next\":\"Следно\",\"No emoji found\":\"Не се пронајдени емотикони\",\"No results\":\"Нема резултати\",\"Objects\":\"Објекти\",\"Pause slideshow\":\"Пузирај слајдшоу\",\"People & Body\":\"Луѓе & Тело\",\"Pick an emoji\":\"Избери емотикон\",\"Previous\":\"Предходно\",\"Search\":\"Барај\",\"Search results\":\"Резултати од барувањето\",\"Select a tag\":\"Избери ознака\",\"Settings\":\"Параметри\",\"Settings navigation\":\"Параметри за навигација\",\"Smileys & Emotion\":\"Смешковци & Емотикони\",\"Start slideshow\":\"Стартувај слајдшоу\",\"Symbols\":\"Симболи\",\"Travel & Places\":\"Патувања & Места\",\"Unable to search the group\":\"Неможе да се принајде групата\",\"Write message, @ to mention someone …\":\"Напиши порака, @ за да спомнеш некој …\"}},{\"locale\":\"nb_NO\",\"translations\":{\"{tag} (invisible)\":\"{tag} (usynlig)\",\"{tag} (restricted)\":\"{tag} (beskyttet)\",\"Actions\":\"Handlinger\",\"Activities\":\"Aktiviteter\",\"Animals & Nature\":\"Dyr og natur\",\"Choose\":\"Velg\",\"Close\":\"Lukk\",\"Custom\":\"Selvvalgt\",\"Flags\":\"Flagg\",\"Food & Drink\":\"Mat og drikke\",\"Frequently used\":\"Ofte brukt\",\"Next\":\"Neste\",\"No emoji found\":\"Fant ingen emoji\",\"No results\":\"Ingen resultater\",\"Objects\":\"Objekter\",\"Pause slideshow\":\"Pause lysbildefremvisning\",\"People & Body\":\"Mennesker og kropp\",\"Pick an emoji\":\"Velg en emoji\",\"Previous\":\"Forrige\",\"Search\":\"Søk\",\"Search results\":\"Søkeresultater\",\"Select a tag\":\"Velg en merkelapp\",\"Settings\":\"Innstillinger\",\"Smileys & Emotion\":\"Smilefjes og følelser\",\"Start slideshow\":\"Start lysbildefremvisning\",\"Symbols\":\"Symboler\",\"Travel & Places\":\"Reise og steder\",\"Unable to search the group\":\"Kunne ikke søke i gruppen\"}},{\"locale\":\"nl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (onzichtbaar)\",\"{tag} (restricted)\":\"{tag} (beperkt)\",\"Actions\":\"Acties\",\"Activities\":\"Activiteiten\",\"Animals & Nature\":\"Dieren & Natuur\",\"Choose\":\"Kies\",\"Close\":\"Sluiten\",\"Custom\":\"Aangepast\",\"Flags\":\"Vlaggen\",\"Food & Drink\":\"Eten & Drinken\",\"Frequently used\":\"Vaak gebruikt\",\"Message limit of {count} characters reached\":\"Berichtlengte van {count} karakters bereikt\",\"Next\":\"Volgende\",\"No emoji found\":\"Geen emoji gevonden\",\"No results\":\"Geen resultaten\",\"Objects\":\"Objecten\",\"Pause slideshow\":\"Pauzeer diavoorstelling\",\"People & Body\":\"Mensen & Lichaam\",\"Pick an emoji\":\"Kies een emoji\",\"Previous\":\"Vorige\",\"Search\":\"Zoeken\",\"Search results\":\"Zoekresultaten\",\"Select a tag\":\"Selecteer een label\",\"Settings\":\"Instellingen\",\"Settings navigation\":\"Instellingen navigatie\",\"Smileys & Emotion\":\"Smileys & Emotie\",\"Start slideshow\":\"Start diavoorstelling\",\"Symbols\":\"Symbolen\",\"Travel & Places\":\"Reizen & Plaatsen\",\"Unable to search the group\":\"Kan niet in de groep zoeken\",\"Write message, @ to mention someone …\":\"Schrijf een bericht, @ om iemand te noemen ...\"}},{\"locale\":\"oc\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (limit)\",\"Actions\":\"Accions\",\"Choose\":\"Causir\",\"Close\":\"Tampar\",\"Next\":\"Seguent\",\"No results\":\"Cap de resultat\",\"Pause slideshow\":\"Metre en pausa lo diaporama\",\"Previous\":\"Precedent\",\"Select a tag\":\"Seleccionar una etiqueta\",\"Settings\":\"Paramètres\",\"Start slideshow\":\"Lançar lo diaporama\"}},{\"locale\":\"pl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (niewidoczna)\",\"{tag} (restricted)\":\"{tag} (ograniczona)\",\"Actions\":\"Działania\",\"Activities\":\"Aktywność\",\"Animals & Nature\":\"Zwierzęta i natura\",\"Choose\":\"Wybierz\",\"Close\":\"Zamknij\",\"Custom\":\"Zwyczajne\",\"External documentation for {title}\":\"Dokumentacja zewnętrzna dla {title}\",\"Flags\":\"Flagi\",\"Food & Drink\":\"Jedzenie i picie\",\"Frequently used\":\"Często używane\",\"Message limit of {count} characters reached\":\"Przekroczono limit wiadomości wynoszący {count} znaków\",\"Next\":\"Następny\",\"No emoji found\":\"Nie znaleziono emotikonów\",\"No results\":\"Brak wyników\",\"Objects\":\"Obiekty\",\"Pause slideshow\":\"Wstrzymaj pokaz slajdów\",\"People & Body\":\"Ludzie i ciało\",\"Pick an emoji\":\"Wybierz emoji\",\"Previous\":\"Poprzedni\",\"Search\":\"Szukaj\",\"Search results\":\"Wyniki wyszukiwania\",\"Select a tag\":\"Wybierz etykietę\",\"Settings\":\"Ustawienia\",\"Settings navigation\":\"Nawigacja ustawień\",\"Smileys & Emotion\":\"Buźki i emotikony\",\"Start slideshow\":\"Rozpocznij pokaz slajdów\",\"Submit\":\"Wyślij\",\"Symbols\":\"Symbole\",\"Travel & Places\":\"Podróże i miejsca\",\"Unable to search the group\":\"Nie można przeszukać grupy\",\"Write message, @ to mention someone …\":\"Napisz wiadomość, aby wspomnieć o kimś użyj @…\"}},{\"locale\":\"pt_BR\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisível)\",\"{tag} (restricted)\":\"{tag} (restrito) \",\"Actions\":\"Ações\",\"Activities\":\"Atividades\",\"Animals & Nature\":\"Animais & Natureza\",\"Choose\":\"Escolher\",\"Close\":\"Fechar\",\"Custom\":\"Personalizado\",\"External documentation for {title}\":\"Documentação externa para {title}\",\"Flags\":\"Bandeiras\",\"Food & Drink\":\"Comida & Bebida\",\"Frequently used\":\"Mais usados\",\"Message limit of {count} characters reached\":\"Limite de mensagem de {count} caracteres atingido\",\"Next\":\"Próximo\",\"No emoji found\":\"Nenhum emoji encontrado\",\"No results\":\"Sem resultados\",\"Objects\":\"Objetos\",\"Pause slideshow\":\"Pausar apresentação de slides\",\"People & Body\":\"Pessoas & Corpo\",\"Pick an emoji\":\"Escolha um emoji\",\"Previous\":\"Anterior\",\"Search\":\"Pesquisar\",\"Search results\":\"Resultados da pesquisa\",\"Select a tag\":\"Selecionar uma tag\",\"Settings\":\"Configurações\",\"Settings navigation\":\"Navegação de configurações\",\"Smileys & Emotion\":\"Smiles & Emoções\",\"Start slideshow\":\"Iniciar apresentação de slides\",\"Submit\":\"Enviar\",\"Symbols\":\"Símbolo\",\"Travel & Places\":\"Viagem & Lugares\",\"Unable to search the group\":\"Não foi possível pesquisar o grupo\",\"Write message, @ to mention someone …\":\"Escreva mensagem, @ para mencionar alguém ...\"}},{\"locale\":\"pt_PT\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisivel)\",\"{tag} (restricted)\":\"{tag} (restrito)\",\"Actions\":\"Ações\",\"Choose\":\"Escolher\",\"Close\":\"Fechar\",\"Next\":\"Seguinte\",\"No results\":\"Sem resultados\",\"Pause slideshow\":\"Pausar diaporama\",\"Previous\":\"Anterior\",\"Select a tag\":\"Selecionar uma etiqueta\",\"Settings\":\"Definições\",\"Start slideshow\":\"Iniciar diaporama\",\"Unable to search the group\":\"Não é possível pesquisar o grupo\"}},{\"locale\":\"ru\",\"translations\":{\"{tag} (invisible)\":\"{tag} (невидимое)\",\"{tag} (restricted)\":\"{tag} (ограниченное)\",\"Choose\":\"Выберите\",\"Close\":\"Закрыть\",\"Next\":\"Следующее\",\"No results\":\"Результаты отсуствуют\",\"Pause slideshow\":\"Приостановить показ слйдов\",\"Previous\":\"Предыдущее\",\"Select a tag\":\"Выберите метку\",\"Settings\":\"Параметры\",\"Start slideshow\":\"Начать показ слайдов\"}},{\"locale\":\"sk_SK\",\"translations\":{\"{tag} (invisible)\":\"{tag} (neviditeľný)\",\"{tag} (restricted)\":\"{tag} (obmedzený)\",\"Actions\":\"Akcie\",\"Activities\":\"Aktivity\",\"Animals & Nature\":\"Zvieratá a príroda\",\"Choose\":\"Vybrať\",\"Close\":\"Zatvoriť\",\"Custom\":\"Zvyk\",\"Flags\":\"Vlajky\",\"Food & Drink\":\"Jedlo a nápoje\",\"Frequently used\":\"Často používané\",\"Next\":\"Ďalší\",\"No emoji found\":\"Nenašli sa žiadne emodži\",\"No results\":\"Žiadne výsledky\",\"Objects\":\"Objekty\",\"Pause slideshow\":\"Pozastaviť prezentáciu\",\"People & Body\":\"Ľudia a telo\",\"Pick an emoji\":\"Vyberte si emodži\",\"Previous\":\"Predchádzajúci\",\"Search\":\"Hľadať\",\"Search results\":\"Výsledky vyhľadávania\",\"Select a tag\":\"Vybrať štítok\",\"Settings\":\"Nastavenia\",\"Smileys & Emotion\":\"Smajlíky a emócie\",\"Start slideshow\":\"Začať prezentáciu\",\"Symbols\":\"Symboly\",\"Travel & Places\":\"Cestovanie a miesta\",\"Unable to search the group\":\"Skupinu sa nepodarilo nájsť\"}},{\"locale\":\"sl\",\"translations\":{\"{tag} (invisible)\":\"{tag} (nevidno)\",\"{tag} (restricted)\":\"{tag} (omejeno)\",\"Actions\":\"Dejanja\",\"Activities\":\"Dejavnosti\",\"Animals & Nature\":\"Živali in Narava\",\"Choose\":\"Izbor\",\"Close\":\"Zapri\",\"Custom\":\"Po meri\",\"External documentation for {title}\":\"Zunanja dokumentacija za {title}\",\"Flags\":\"Zastavice\",\"Food & Drink\":\"Hrana in Pijača\",\"Frequently used\":\"Pogostost uporabe\",\"Message limit of {count} characters reached\":\"Dosežena omejitev {count} znakov na sporočilo.\",\"Next\":\"Naslednji\",\"No emoji found\":\"Ni najdenih izraznih ikon\",\"No results\":\"Ni zadetkov\",\"Objects\":\"Predmeti\",\"Pause slideshow\":\"Ustavi predstavitev\",\"People & Body\":\"Ljudje in Telo\",\"Pick an emoji\":\"Izbor izrazne ikone\",\"Previous\":\"Predhodni\",\"Search\":\"Iskanje\",\"Search results\":\"Zadetki iskanja\",\"Select a tag\":\"Izbor oznake\",\"Settings\":\"Nastavitve\",\"Settings navigation\":\"Krmarjenje nastavitev\",\"Smileys & Emotion\":\"Izrazne ikone\",\"Start slideshow\":\"Začni predstavitev\",\"Submit\":\"Pošlji\",\"Symbols\":\"Simboli\",\"Travel & Places\":\"Potovanja in Kraji\",\"Unable to search the group\":\"Ni mogoče iskati po skuspini\",\"Write message, @ to mention someone …\":\"Napišite sporočilo, z @ omenite osebo ...\"}},{\"locale\":\"sv\",\"translations\":{\"{tag} (invisible)\":\"{tag} (osynlig)\",\"{tag} (restricted)\":\"{tag} (begränsad)\",\"Actions\":\"Åtgärder\",\"Activities\":\"Aktiviteter\",\"Animals & Nature\":\"Djur & Natur\",\"Choose\":\"Välj\",\"Close\":\"Stäng\",\"Custom\":\"Anpassad\",\"Flags\":\"Flaggor\",\"Food & Drink\":\"Mat & Dryck\",\"Frequently used\":\"Används ofta\",\"Message limit of {count} characters reached\":\"Meddelandegräns {count} tecken används\",\"Next\":\"Nästa\",\"No emoji found\":\"Hittade inga emojis\",\"No results\":\"Inga resultat\",\"Objects\":\"Objekt\",\"Pause slideshow\":\"Pausa bildspelet\",\"People & Body\":\"Kropp & Själ\",\"Pick an emoji\":\"Välj en emoji\",\"Previous\":\"Föregående\",\"Search\":\"Sök\",\"Search results\":\"Sökresultat\",\"Select a tag\":\"Välj en tag\",\"Settings\":\"Inställningar\",\"Settings navigation\":\"Inställningsmeny\",\"Smileys & Emotion\":\"Selfies & Känslor\",\"Start slideshow\":\"Starta bildspelet\",\"Symbols\":\"Symboler\",\"Travel & Places\":\"Resor & Sevärdigheter\",\"Unable to search the group\":\"Kunde inte söka i gruppen\",\"Write message, @ to mention someone …\":\"Skicka meddelande, skriv @ för att omnämna någon ...\"}},{\"locale\":\"tr\",\"translations\":{\"{tag} (invisible)\":\"{tag} (görünmez)\",\"{tag} (restricted)\":\"{tag} (kısıtlı)\",\"Actions\":\"İşlemler\",\"Activities\":\"Etkinlikler\",\"Animals & Nature\":\"Hayvanlar ve Doğa\",\"Choose\":\"Seçin\",\"Close\":\"Kapat\",\"Custom\":\"Özel\",\"External documentation for {title}\":\"{title} için dış belgeler\",\"Flags\":\"Bayraklar\",\"Food & Drink\":\"Yeme ve İçme\",\"Frequently used\":\"Sık kullanılanlar\",\"Message limit of {count} characters reached\":\"{count} karakter ileti sınırına ulaşıldı\",\"Next\":\"Sonraki\",\"No emoji found\":\"Herhangi bir emoji bulunamadı\",\"No results\":\"Herhangi bir sonuç bulunamadı\",\"Objects\":\"Nesneler\",\"Pause slideshow\":\"Slayt sunumunu duraklat\",\"People & Body\":\"İnsanlar ve Beden\",\"Pick an emoji\":\"Bir emoji seçin\",\"Previous\":\"Önceki\",\"Search\":\"Arama\",\"Search results\":\"Arama sonuçları\",\"Select a tag\":\"Bir etiket seçin\",\"Settings\":\"Ayarlar\",\"Settings navigation\":\"Gezinme ayarları\",\"Smileys & Emotion\":\"İfadeler ve Duygular\",\"Start slideshow\":\"Slayt sunumunu başlat\",\"Submit\":\"Gönder\",\"Symbols\":\"Simgeler\",\"Travel & Places\":\"Gezi ve Yerler\",\"Unable to search the group\":\"Grupta arama yapılamadı\",\"Write message, @ to mention someone …\":\"İletiyi yazın. Birini anmak için @ kullanın …\"}},{\"locale\":\"uk\",\"translations\":{\"{tag} (invisible)\":\"{tag} (invisible)\",\"{tag} (restricted)\":\"{tag} (restricted)\",\"Actions\":\"Дії\",\"Activities\":\"Діяльність\",\"Animals & Nature\":\"Тварини та природа\",\"Choose\":\"Виберіть\",\"Close\":\"Закрити\",\"Custom\":\"Власне\",\"Flags\":\"Прапори\",\"Food & Drink\":\"Їжа та напитки\",\"Frequently used\":\"Найчастіші\",\"Next\":\"Вперед\",\"No emoji found\":\"Емоційки відсутні\",\"No results\":\"Відсутні результати\",\"Objects\":\"Об'єкти\",\"Pause slideshow\":\"Пауза у показі слайдів\",\"People & Body\":\"Люди та жести\",\"Pick an emoji\":\"Виберіть емоційку\",\"Previous\":\"Назад\",\"Search\":\"Пошук\",\"Search results\":\"Результати пошуку\",\"Select a tag\":\"Виберіть позначку\",\"Settings\":\"Налаштування\",\"Smileys & Emotion\":\"Усміхайлики та емоційки\",\"Start slideshow\":\"Почати показ слайдів\",\"Symbols\":\"Символи\",\"Travel & Places\":\"Поїздки та місця\",\"Unable to search the group\":\"Неможливо шукати в групі\"}},{\"locale\":\"zh_CN\",\"translations\":{\"{tag} (invisible)\":\"{tag} (不可见)\",\"{tag} (restricted)\":\"{tag} (受限)\",\"Actions\":\"行为\",\"Activities\":\"活动\",\"Animals & Nature\":\"动物 & 自然\",\"Choose\":\"选择\",\"Close\":\"关闭\",\"Custom\":\"自定义\",\"Flags\":\"旗帜\",\"Food & Drink\":\"食物 & 饮品\",\"Frequently used\":\"经常使用\",\"Message limit of {count} characters reached\":\"已达到 {count} 个字符的消息限制\",\"Next\":\"下一个\",\"No emoji found\":\"表情未找到\",\"No results\":\"无结果\",\"Objects\":\"物体\",\"Pause slideshow\":\"暂停幻灯片\",\"People & Body\":\"人 & 身体\",\"Pick an emoji\":\"选择一个表情\",\"Previous\":\"上一个\",\"Search\":\"搜索\",\"Search results\":\"搜索结果\",\"Select a tag\":\"选择一个标签\",\"Settings\":\"设置\",\"Settings navigation\":\"设置向导\",\"Smileys & Emotion\":\"笑脸 & 情感\",\"Start slideshow\":\"开始幻灯片\",\"Symbols\":\"符号\",\"Travel & Places\":\"旅游 & 地点\",\"Unable to search the group\":\"无法搜索分组\",\"Write message, @ to mention someone …\":\"输入消息,输入 @ 来提醒某人\"}},{\"locale\":\"zh_HK\",\"translations\":{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",\"Actions\":\"動作\",\"Activities\":\"活動\",\"Animals & Nature\":\"動物與自然\",\"Choose\":\"選擇\",\"Close\":\"關閉\",\"Custom\":\"自定義\",\"External documentation for {title}\":\"{title} 的外部文檔\",\"Flags\":\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"經常使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"Next\":\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",\"Objects\":\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Previous\":\"上一個\",\"Search\":\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",\"Settings\":\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",\"Submit\":\"提交\",\"Symbols\":\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}},{\"locale\":\"zh_TW\",\"translations\":{\"{tag} (invisible)\":\"{tag} (隱藏)\",\"{tag} (restricted)\":\"{tag} (受限)\",\"Actions\":\"動作\",\"Activities\":\"活動\",\"Animals & Nature\":\"動物與自然\",\"Choose\":\"選擇\",\"Close\":\"關閉\",\"Custom\":\"自定義\",\"Flags\":\"旗幟\",\"Food & Drink\":\"食物與飲料\",\"Frequently used\":\"最近使用\",\"Message limit of {count} characters reached\":\"已達到訊息最多 {count} 字元限制\",\"Next\":\"下一個\",\"No emoji found\":\"未找到表情符號\",\"No results\":\"無結果\",\"Objects\":\"物件\",\"Pause slideshow\":\"暫停幻燈片\",\"People & Body\":\"人物\",\"Pick an emoji\":\"選擇表情符號\",\"Previous\":\"上一個\",\"Search\":\"搜尋\",\"Search results\":\"搜尋結果\",\"Select a tag\":\"選擇標籤\",\"Settings\":\"設定\",\"Settings navigation\":\"設定值導覽\",\"Smileys & Emotion\":\"表情\",\"Start slideshow\":\"開始幻燈片\",\"Symbols\":\"標誌\",\"Travel & Places\":\"旅遊與景點\",\"Unable to search the group\":\"無法搜尋群組\",\"Write message, @ to mention someone …\":\"輸入訊息時可使用 @ 來標示某人...\"}}].forEach(function (lang) {\n var translations = {};\n\n for (var key in lang.translations) {\n // Plural\n if (lang.translations[key].pluralId) {\n translations[key] = {\n msgid: key,\n msgid_plural: lang.translations[key].pluralId,\n msgstr: lang.translations[key].msgstr\n };\n continue;\n } // Singular\n\n\n translations[key] = {\n msgid: key,\n msgstr: [lang.translations[key]]\n };\n }\n\n gtBuilder.addTranslation(lang.locale, {\n translations: {\n '': translations\n }\n });\n});\nvar gt = gtBuilder.build();\nvar n = gt.ngettext.bind(gt);\nvar t = gt.gettext.bind(gt);\n\n\n/***/ }),\n\n/***/ \"./src/mixins/actionGlobal.js\":\n/*!************************************!*\\\n !*** ./src/mixins/actionGlobal.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \"core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n before: function before() {\n // all actions requires a valid text content\n // if none, forbid the component mount and throw error\n if (!this.$slots.default || this.text.trim() === '') {\n vue__WEBPACK_IMPORTED_MODULE_2___default.a.util.warn(\"\".concat(this.$options.name, \" cannot be empty and requires a meaningful text content\"), this);\n this.$destroy();\n this.$el.remove();\n }\n },\n beforeUpdate: function beforeUpdate() {\n this.text = this.getText();\n },\n data: function data() {\n return {\n // $slots are not reactive.\n // We need to update the content manually\n text: this.getText()\n };\n },\n computed: {\n isLongText: function isLongText() {\n return this.text && this.text.trim().length > 20;\n }\n },\n methods: {\n getText: function getText() {\n return this.$slots.default ? this.$slots.default[0].text.trim() : '';\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/actionText.js\":\n/*!**********************************!*\\\n !*** ./src/mixins/actionText.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ \"core-js/modules/es.array.iterator.js\");\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ \"core-js/modules/es.string.iterator.js\");\n/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.url.js */ \"core-js/modules/web.url.js\");\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _actionGlobal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./actionGlobal */ \"./src/mixins/actionGlobal.js\");\n/* harmony import */ var _utils_GetParent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/GetParent */ \"./src/utils/GetParent.js\");\n\n\n\n\n\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_actionGlobal__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n props: {\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: ''\n },\n\n /**\n * Title to show next to the icon\n */\n title: {\n type: String,\n default: ''\n },\n\n /**\n * Whether we close the Actions menu after the click\n */\n closeAfterClick: {\n type: Boolean,\n default: false\n },\n\n /**\n * Aria label for the button. Not needed if the button has text.\n */\n ariaLabel: {\n type: String,\n default: ''\n }\n },\n computed: {\n isIconUrl: function isIconUrl() {\n try {\n return new URL(this.icon);\n } catch (error) {\n return false;\n }\n }\n },\n methods: {\n onClick: function onClick(event) {\n /**\n * Emitted when the action is clicked\n * @type {Event}\n */\n this.$emit('click', event);\n\n if (this.closeAfterClick) {\n var parent = Object(_utils_GetParent__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, 'Actions');\n\n if (parent && parent.closeMenu) {\n parent.closeMenu();\n }\n }\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/mixins/isMobile/index.js\":\n/*!**************************************!*\\\n !*** ./src/mixins/isMobile/index.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/IsMobileState */ \"./src/utils/IsMobileState.js\");\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n isMobile: false\n };\n },\n mounted: function mounted() {\n _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].$on('changed', this.onIsMobileChanged);\n this.isMobile = _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].isMobile;\n },\n beforeDestroy: function beforeDestroy() {\n _utils_IsMobileState__WEBPACK_IMPORTED_MODULE_0__[\"IsMobileState\"].$off('changed', this.onIsMobileChanged);\n },\n methods: {\n onIsMobileChanged: function onIsMobileChanged(val) {\n this.isMobile = val;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/utils/GenRandomId.js\":\n/*!**********************************!*\\\n !*** ./src/utils/GenRandomId.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nvar GenRandomId = function GenRandomId(length) {\n return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, length || 5);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GenRandomId);\n\n/***/ }),\n\n/***/ \"./src/utils/GetParent.js\":\n/*!********************************!*\\\n !*** ./src/utils/GetParent.js ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {Object} context the context to search from (usualy this)\n * @param {string} name the parent name\n * @returns {Object} the parent component\n */\nvar GetParent = function GetParent(context, name) {\n var parent = context.$parent;\n\n while (parent) {\n if (parent.$options.name === name) {\n return parent;\n }\n\n parent = parent.$parent;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GetParent);\n\n/***/ }),\n\n/***/ \"./src/utils/IsMobileState.js\":\n/*!************************************!*\\\n !*** ./src/utils/IsMobileState.js ***!\n \\************************************/\n/*! exports provided: IsMobileState */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IsMobileState\", function() { return IsMobileState; });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer\n *\n * @author Kristof Hamann\n * @author Paul Schwörer\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nvar IsMobileState = new vue__WEBPACK_IMPORTED_MODULE_0___default.a({\n data: function data() {\n return {\n isMobile: false\n };\n },\n watch: {\n isMobile: function isMobile(val) {\n this.$emit('changed', val);\n }\n },\n created: function created() {\n window.addEventListener('resize', this.handleWindowResize);\n this.handleWindowResize();\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleWindowResize);\n },\n methods: {\n handleWindowResize: function handleWindowResize() {\n this.isMobile = document.documentElement.clientWidth < 1024;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/utils/ValidateSlot.js\":\n/*!***********************************!*\\\n !*** ./src/utils/ValidateSlot.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ \"core-js/modules/es.array.splice.js\");\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Validate children of a vue component\n *\n * @param {Object[]} slots the vue component slot\n * @param {String[]} allowed the allowed components name\n * @param {Object} vm the vue component instance\n */\n\nvar ValidateSlot = function ValidateSlot(slots, allowed, vm) {\n if (slots === undefined) {\n return;\n }\n\n for (var index = slots.length - 1; index >= 0; index--) {\n var node = slots[index]; // also check against allowed to avoid uninitiated vnodes with no componentOptions\n\n var isHtmlElement = !node.componentOptions && node.tag && allowed.indexOf(node.tag) === -1;\n var isVueComponent = !!node.componentOptions && typeof node.componentOptions.tag === 'string';\n var isForbiddenComponent = isVueComponent && allowed.indexOf(node.componentOptions.tag) === -1; // if html element or not a vue component or vue component not in allowed tags\n\n if (isHtmlElement || !isVueComponent || isForbiddenComponent) {\n // only warn when html elment or forbidden component\n // sometimes text nodes are present which are hardly removeable by the developer and spam the warnings\n if (isHtmlElement || isForbiddenComponent) {\n vue__WEBPACK_IMPORTED_MODULE_3___default.a.util.warn(\"\".concat(isHtmlElement ? node.tag : node.componentOptions.tag, \" is not allowed inside the \").concat(vm.$options.name, \" component\"), vm);\n } // cleanup\n\n\n slots.splice(index, 1);\n }\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ValidateSlot);\n\n/***/ }),\n\n/***/ \"@nextcloud/l10n/dist/gettext\":\n/*!***********************************************!*\\\n !*** external \"@nextcloud/l10n/dist/gettext\" ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@nextcloud/l10n/dist/gettext\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.concat.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.array.concat.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.concat.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.filter.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.array.filter.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.filter.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.from.js\":\n/*!***************************************************!*\\\n !*** external \"core-js/modules/es.array.from.js\" ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.from.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.iterator.js\":\n/*!*******************************************************!*\\\n !*** external \"core-js/modules/es.array.iterator.js\" ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.slice.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.array.slice.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.slice.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.array.splice.js\":\n/*!*****************************************************!*\\\n !*** external \"core-js/modules/es.array.splice.js\" ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.array.splice.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.function.name.js\":\n/*!******************************************************!*\\\n !*** external \"core-js/modules/es.function.name.js\" ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.function.name.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.get-own-property-descriptor.js\":\n/*!***************************************************************************!*\\\n !*** external \"core-js/modules/es.object.get-own-property-descriptor.js\" ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.get-own-property-descriptor.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.get-own-property-descriptors.js\":\n/*!****************************************************************************!*\\\n !*** external \"core-js/modules/es.object.get-own-property-descriptors.js\" ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.get-own-property-descriptors.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.keys.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.object.keys.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.keys.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.object.to-string.js\":\n/*!*********************************************************!*\\\n !*** external \"core-js/modules/es.object.to-string.js\" ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.object.to-string.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.regexp.exec.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.regexp.exec.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.regexp.exec.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.regexp.to-string.js\":\n/*!*********************************************************!*\\\n !*** external \"core-js/modules/es.regexp.to-string.js\" ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.regexp.to-string.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.iterator.js\":\n/*!********************************************************!*\\\n !*** external \"core-js/modules/es.string.iterator.js\" ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.replace.js\":\n/*!*******************************************************!*\\\n !*** external \"core-js/modules/es.string.replace.js\" ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.replace.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.string.trim.js\":\n/*!****************************************************!*\\\n !*** external \"core-js/modules/es.string.trim.js\" ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.string.trim.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.symbol.description.js\":\n/*!***********************************************************!*\\\n !*** external \"core-js/modules/es.symbol.description.js\" ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.symbol.description.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.symbol.iterator.js\":\n/*!********************************************************!*\\\n !*** external \"core-js/modules/es.symbol.iterator.js\" ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.symbol.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/es.symbol.js\":\n/*!***********************************************!*\\\n !*** external \"core-js/modules/es.symbol.js\" ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/es.symbol.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/web.dom-collections.for-each.js\":\n/*!******************************************************************!*\\\n !*** external \"core-js/modules/web.dom-collections.for-each.js\" ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/web.dom-collections.for-each.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/web.dom-collections.iterator.js\":\n/*!******************************************************************!*\\\n !*** external \"core-js/modules/web.dom-collections.iterator.js\" ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/web.dom-collections.iterator.js\");\n\n/***/ }),\n\n/***/ \"core-js/modules/web.url.js\":\n/*!*********************************************!*\\\n !*** external \"core-js/modules/web.url.js\" ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"core-js/modules/web.url.js\");\n\n/***/ }),\n\n/***/ \"v-click-outside\":\n/*!**********************************!*\\\n !*** external \"v-click-outside\" ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"v-click-outside\");\n\n/***/ }),\n\n/***/ \"v-tooltip\":\n/*!****************************!*\\\n !*** external \"v-tooltip\" ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"v-tooltip\");\n\n/***/ }),\n\n/***/ \"vue\":\n/*!**********************!*\\\n !*** external \"vue\" ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQWN0aW9uQnV0dG9uL0FjdGlvbkJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9zcmMvY29tcG9uZW50cy9BY3Rpb25zL0FjdGlvbnMudnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9BcHBOYXZpZ2F0aW9uSXRlbS52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9JbnB1dENvbmZpcm1DYW5jZWwudnVlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2RpcmVjdGl2ZXMvVG9vbHRpcC9pbmRleC5zY3NzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BY3Rpb25CdXR0b24vQWN0aW9uQnV0dG9uLnZ1ZT84OTA2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BY3Rpb25zL0FjdGlvbnMudnVlP2U1ODUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlPzQxZmUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZT82NzVkIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9JbnB1dENvbmZpcm1DYW5jZWwudnVlP2E1ZjYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWU/NDYzZiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FjdGlvbkJ1dHRvbi9BY3Rpb25CdXR0b24udnVlPzQ5ZjkiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FjdGlvbnMvQWN0aW9ucy52dWU/MDk0MCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/ZGQ5YSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkl0ZW0udnVlPzAxZDUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0lucHV0Q29uZmlybUNhbmNlbC52dWU/NDdkYSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZT8yNjZlIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FjdGlvbkJ1dHRvbi9BY3Rpb25CdXR0b24udnVlPzZkNjAiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FjdGlvbnMvQWN0aW9ucy52dWU/ZGNmOSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/ZjU5ZCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkl0ZW0udnVlPzE0ZTkiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0lucHV0Q29uZmlybUNhbmNlbC52dWU/YmY3ZCIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZT8wZGQ2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BY3Rpb25CdXR0b24vQWN0aW9uQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQWN0aW9uQnV0dG9uL0FjdGlvbkJ1dHRvbi52dWU/NDg0MSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQWN0aW9uQnV0dG9uL0FjdGlvbkJ1dHRvbi52dWU/ZjcwYSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQWN0aW9uQnV0dG9uL0FjdGlvbkJ1dHRvbi52dWU/YWUyYyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQWN0aW9ucy9BY3Rpb25zLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQWN0aW9ucy9BY3Rpb25zLnZ1ZT9iN2RmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BY3Rpb25zL0FjdGlvbnMudnVlP2MzNzgiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FjdGlvbnMvQWN0aW9ucy52dWU/YTljYSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlPzY0NzAiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlPzhkMjEiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlP2VkYzUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vQXBwTmF2aWdhdGlvbkl0ZW0udnVlPzIwNjAiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZT85OGZmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9BcHBOYXZpZ2F0aW9uSXRlbS52dWU/NjAyYSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vSW5wdXRDb25maXJtQ2FuY2VsLnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vSW5wdXRDb25maXJtQ2FuY2VsLnZ1ZT8yMDUzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9JbnB1dENvbmZpcm1DYW5jZWwudnVlPzRmZGYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0lucHV0Q29uZmlybUNhbmNlbC52dWU/OGJkMSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvUG9wb3Zlci52dWU/MDFkMiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnZ1ZT8xNGM2Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyL1BvcG92ZXIudnVlPzcyZjYiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL1BvcG92ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9kaXJlY3RpdmVzL1Rvb2x0aXAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9kaXJlY3RpdmVzL1Rvb2x0aXAvaW5kZXguc2Nzcz9hZmU4Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYuZW90Iiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYuc3ZnIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYudHRmIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYud29mZiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2wxMG4uanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9taXhpbnMvYWN0aW9uR2xvYmFsLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvbWl4aW5zL2FjdGlvblRleHQuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9taXhpbnMvaXNNb2JpbGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy91dGlscy9HZW5SYW5kb21JZC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL3V0aWxzL0dldFBhcmVudC5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL3V0aWxzL0lzTW9iaWxlU3RhdGUuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy91dGlscy9WYWxpZGF0ZVNsb3QuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcIkBuZXh0Y2xvdWQvbDEwbi9kaXN0L2dldHRleHRcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLml0ZXJhdG9yLmpzXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanNcIiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL2V4dGVybmFsIFwidi1jbGljay1vdXRzaWRlXCIiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS9leHRlcm5hbCBcInYtdG9vbHRpcFwiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vZXh0ZXJuYWwgXCJ2dWVcIiJdLCJuYW1lcyI6WyJBcHBOYXZpZ2F0aW9uSXRlbSIsIlBvcG92ZXIiLCJWVG9vbHRpcCIsIm9wdGlvbnMiLCJkZWZhdWx0VGVtcGxhdGUiLCJTQ09QRV9WRVJTSU9OIiwiZGVmYXVsdEh0bWwiLCJndEJ1aWxkZXIiLCJnZXRHZXR0ZXh0QnVpbGRlciIsImRldGVjdExvY2FsZSIsIlRSQU5TTEFUSU9OUyIsImZvckVhY2giLCJsYW5nIiwidHJhbnNsYXRpb25zIiwia2V5IiwicGx1cmFsSWQiLCJtc2dpZCIsIm1zZ2lkX3BsdXJhbCIsIm1zZ3N0ciIsImFkZFRyYW5zbGF0aW9uIiwibG9jYWxlIiwiZ3QiLCJidWlsZCIsIm4iLCJuZ2V0dGV4dCIsImJpbmQiLCJ0IiwiZ2V0dGV4dCIsImJlZm9yZSIsIiRzbG90cyIsImRlZmF1bHQiLCJ0ZXh0IiwidHJpbSIsIlZ1ZSIsInV0aWwiLCJ3YXJuIiwiJG9wdGlvbnMiLCJuYW1lIiwiJGRlc3Ryb3kiLCIkZWwiLCJyZW1vdmUiLCJiZWZvcmVVcGRhdGUiLCJnZXRUZXh0IiwiZGF0YSIsImNvbXB1dGVkIiwiaXNMb25nVGV4dCIsImxlbmd0aCIsIm1ldGhvZHMiLCJtaXhpbnMiLCJhY3Rpb25HbG9iYWwiLCJwcm9wcyIsImljb24iLCJ0eXBlIiwiU3RyaW5nIiwidGl0bGUiLCJjbG9zZUFmdGVyQ2xpY2siLCJCb29sZWFuIiwiYXJpYUxhYmVsIiwiaXNJY29uVXJsIiwiVVJMIiwiZXJyb3IiLCJvbkNsaWNrIiwiZXZlbnQiLCIkZW1pdCIsInBhcmVudCIsIkdldFBhcmVudCIsImNsb3NlTWVudSIsImlzTW9iaWxlIiwibW91bnRlZCIsIklzTW9iaWxlU3RhdGUiLCIkb24iLCJvbklzTW9iaWxlQ2hhbmdlZCIsImJlZm9yZURlc3Ryb3kiLCIkb2ZmIiwidmFsIiwiR2VuUmFuZG9tSWQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJyZXBsYWNlIiwic3Vic3RyIiwiY29udGV4dCIsIiRwYXJlbnQiLCJ3YXRjaCIsImNyZWF0ZWQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlV2luZG93UmVzaXplIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiY2xpZW50V2lkdGgiLCJWYWxpZGF0ZVNsb3QiLCJzbG90cyIsImFsbG93ZWQiLCJ2bSIsInVuZGVmaW5lZCIsImluZGV4Iiwibm9kZSIsImlzSHRtbEVsZW1lbnQiLCJjb21wb25lbnRPcHRpb25zIiwidGFnIiwiaW5kZXhPZiIsImlzVnVlQ29tcG9uZW50IiwiaXNGb3JiaWRkZW5Db21wb25lbnQiLCJzcGxpY2UiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsQ0FBQztBQUNELE87UUNWQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN3Q0E7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQSxzQkFEQTtBQUdBLHNFQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQURBO0FBRUE7QUFGQTtBQUpBLEdBTEE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFMQSx5QkFLQTtB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REEsRUFDQTtBQUNBO0FBQ0E7QUFIQTtBQVZBLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNEpBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsMkJBREE7QUFHQTtBQUNBLHFFQURBO0FBRUEsb0ZBRkE7QUFHQSx1R0FIQTtBQUlBO0FBSkEsR0FIQTtBQVNBO0FBQ0E7QUFEQSxHQVRBO0FBWUEsb0VBWkE7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBREE7QUFFQTtBQUZBLEtBSkE7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQURBO0FBRUE7QUFGQSxLQVpBOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBREE7QUFFQTtBQUZBLEtBckJBOztBQXlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFEQTtBQUVBO0FBRkEsS0E5QkE7O0FBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBO0FBRkEsS0F0Q0E7O0FBMENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBO0FBRkEsS0E5Q0E7O0FBa0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFEQTtBQUVBO0FBRkEsS0F0REE7O0FBMERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBREE7QUFFQTtBQUZBLEtBN0RBOztBQWlFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQURBO0FBRUE7QUFGQSxLQXBFQTs7QUF3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBREE7QUFFQTtBQUZBLEtBN0VB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QUNBQSxnQyIsImZpbGUiOiJDb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJDb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtXCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIkNvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW1cIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiTmV4dGNsb3VkVnVlXCJdID0gcm9vdFtcIk5leHRjbG91ZFZ1ZVwiXSB8fCB7fSwgcm9vdFtcIk5leHRjbG91ZFZ1ZVwiXVtcIkNvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW1cIl0gPSBmYWN0b3J5KCk7XG59KSh3aW5kb3csIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2NvbXBvbmVudHMvQXBwTmF2aWdhdGlvbkl0ZW0vaW5kZXguanNcIik7XG4iLCI8IS0tXG4gIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICAtXG4gIC0gQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gIC0gQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuICAtXG4gIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICAtIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICAtXG4gIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gIC0gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAgLVxuICAtLT5cblxuPGRvY3M+XG5UaGlzIGNvbXBvbmVudCBpcyBtYWRlIHRvIGJlIHVzZWQgaW5zaWRlIG9mIHRoZSBbQWN0aW9uc10oI0FjdGlvbnMpIGNvbXBvbmVudCBzbG90cy5cblxuYGBgdnVlXG5cdDxBY3Rpb25zPlxuXHRcdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZGVsZXRlXCIgQGNsaWNrPVwiYWxlcnQoJ0RlbGV0ZScpXCI+RGVsZXRlPC9BY3Rpb25CdXR0b24+XG5cdFx0PEFjdGlvbkJ1dHRvbiBpY29uPVwiaWNvbi1kZWxldGVcIiA6Y2xvc2UtYWZ0ZXItY2xpY2s9XCJ0cnVlXCIgQGNsaWNrPVwiYWxlcnQoJ0RlbGV0ZSBhbmQgY2xvc2UgbWVudScpXCI+RGVsZXRlIGFuZCBjbG9zZTwvQWN0aW9uQnV0dG9uPlxuXHRcdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZGVsZXRlXCIgOmRpc2FibGVkPVwidHJ1ZVwiIEBjbGljaz1cImFsZXJ0KCdEaXNhYmxlZCcpXCI+RGlzYWJsZWQgYnV0dG9uPC9BY3Rpb25CdXR0b24+XG5cdDwvQWN0aW9ucz5cbmBgYFxuXG5JZiB5b3UncmUgdXNpbmcgYSBsb25nIHRleHQgeW91IGNhbiBzcGVjaWZ5IGEgdGl0bGVcblxuYGBgdnVlXG5cdDxBY3Rpb25zPlxuXHRcdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tYWRkXCIgQGNsaWNrPVwiYWxlcnQoJ0FkZCcpXCI+QWRkIG5ldzwvQWN0aW9uQnV0dG9uPlxuXHRcdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZGVsZXRlXCIgdGl0bGU9XCJMb25nIGJ1dHRvblwiIEBjbGljaz1cImFsZXJ0KCdEZWxldGUnKVwiPlRoaXMgYnV0dG9uIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHZlcnkgbG9uZyB0ZXh0LlxcbkFuZCB3aXRoIG5ldyBsaW5lcyB0b28uPC9BY3Rpb25CdXR0b24+XG5cdDwvQWN0aW9ucz5cbmBgYFxuXG5Zb3UgY2FuIGFsc28gdXNlIGEgY3VzdG9tIGljb24sIGZvciBleGFtcGxlIGZyb20gdGhlIHZ1ZS1tYXRlcmlhbC1kZXNpZ24taWNvbnMgbGlicmFyeTpcblxuYGBgdnVlXG48dGVtcGxhdGU+XG5cdDxBY3Rpb25zPlxuXHRcdDxBY3Rpb25CdXR0b24+XG5cdFx0XHQ8SGFuZExlZnRcblx0XHRcdFx0c2xvdD1cImljb25cIlxuXHRcdFx0XHQ6c2l6ZT1cIjE2XCJcblx0XHRcdFx0ZGVjb3JhdGl2ZVxuXHRcdFx0XHR0aXRsZT1cIlwiIC8+XG5cdFx0XHRSYWlzZSBsZWZ0IGhhbmRcblx0XHQ8L0FjdGlvbkJ1dHRvbj5cblx0XHQ8QWN0aW9uQnV0dG9uPlxuXHRcdFx0PEhhbmRSaWdodFxuXHRcdFx0XHRzbG90PVwiaWNvblwiXG5cdFx0XHRcdDpzaXplPVwiMTZcIlxuXHRcdFx0XHRkZWNvcmF0aXZlXG5cdFx0XHRcdHRpdGxlPVwiXCIgLz5cblx0XHRcdFJhaXNlIHJpZ2h0IGhhbmRcblx0XHQ8L0FjdGlvbkJ1dHRvbj5cblx0PC9BY3Rpb25zPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgSGFuZExlZnQgZnJvbSAndnVlLW1hdGVyaWFsLWRlc2lnbi1pY29ucy9IYW5kTGVmdCdcbmltcG9ydCBIYW5kUmlnaHQgZnJvbSAndnVlLW1hdGVyaWFsLWRlc2lnbi1pY29ucy9IYW5kUmlnaHQnXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0Y29tcG9uZW50czoge1xuXHRcdEhhbmRMZWZ0LFxuXHRcdEhhbmRSaWdodCxcblx0fSxcbn1cbjwvc2NyaXB0PlxuYGBgXG48L2RvY3M+XG5cbjx0ZW1wbGF0ZT5cblx0PGxpIGNsYXNzPVwiYWN0aW9uXCIgOmNsYXNzPVwieyAnYWN0aW9uLS1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIj5cblx0XHQ8YnV0dG9uXG5cdFx0XHRjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuXHRcdFx0OmFyaWEtbGFiZWw9XCJhcmlhTGFiZWxcIlxuXHRcdFx0OmNsYXNzPVwieyBmb2N1c2FibGU6IGlzRm9jdXNhYmxlIH1cIlxuXHRcdFx0QGNsaWNrPVwib25DbGlja1wiPlxuXHRcdFx0PHNwYW4gOmNsYXNzPVwiW2lzSWNvblVybCA/ICdhY3Rpb24tYnV0dG9uX19pY29uLS11cmwnIDogaWNvbl1cIlxuXHRcdFx0XHQ6c3R5bGU9XCJ7IGJhY2tncm91bmRJbWFnZTogaXNJY29uVXJsID8gYHVybCgke2ljb259KWAgOiBudWxsIH1cIlxuXHRcdFx0XHRjbGFzcz1cImFjdGlvbi1idXR0b25fX2ljb25cIj5cblx0XHRcdFx0PCEtLSBAc2xvdCBNYW51YWxseSBwcm92aWRlIGljb24gLS0+XG5cdFx0XHRcdDxzbG90IG5hbWU9XCJpY29uXCIgLz5cblx0XHRcdDwvc3Bhbj5cblxuXHRcdFx0PCEtLSBsb25nIHRleHQgd2l0aCB0aXRsZSAtLT5cblx0XHRcdDxwIHYtaWY9XCJ0aXRsZVwiPlxuXHRcdFx0XHQ8c3Ryb25nIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbl9fdGl0bGVcIj5cblx0XHRcdFx0XHR7eyB0aXRsZSB9fVxuXHRcdFx0XHQ8L3N0cm9uZz5cblx0XHRcdFx0PGJyPlxuXHRcdFx0XHQ8IS0tIHdoaXRlIHNwYWNlIGlzIHNob3duIG9uIGxvbmd0ZXh0LCBzbyB3ZSBjYW4ndFxuXHRcdFx0XHRcdHB1dCB7eyB0ZXh0IH19IG9uIGEgbmV3IGxpbmUgZm9yIGNvZGUgcmVhZGFiaWxpdHkgLS0+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbl9fbG9uZ3RleHRcIiB2LXRleHQ9XCJ0ZXh0XCIgLz5cblx0XHRcdDwvcD5cblxuXHRcdFx0PCEtLSBsb25nIHRleHQgb25seSAtLT5cblx0XHRcdDwhLS0gd2hpdGUgc3BhY2UgaXMgc2hvd24gb24gbG9uZ3RleHQsIHNvIHdlIGNhbid0XG5cdFx0XHRcdHB1dCB7eyB0ZXh0IH19IG9uIGEgbmV3IGxpbmUgZm9yIGNvZGUgcmVhZGFiaWxpdHkgLS0+XG5cdFx0XHQ8cCB2LWVsc2UtaWY9XCJpc0xvbmdUZXh0XCJcblx0XHRcdFx0Y2xhc3M9XCJhY3Rpb24tYnV0dG9uX19sb25ndGV4dFwiXG5cdFx0XHRcdHYtdGV4dD1cInRleHRcIiAvPlxuXG5cdFx0XHQ8IS0tIGRlZmF1bHQgdGV4dCBkaXNwbGF5IC0tPlxuXHRcdFx0PHNwYW4gdi1lbHNlIGNsYXNzPVwiYWN0aW9uLWJ1dHRvbl9fdGV4dFwiPnt7IHRleHQgfX08L3NwYW4+XG5cblx0XHRcdDwhLS0gZmFrZSBzbG90IHRvIGdhdGhlciBpbm5lciB0ZXh0IC0tPlxuXHRcdFx0PHNsb3Qgdi1pZj1cImZhbHNlXCIgLz5cblx0XHQ8L2J1dHRvbj5cblx0PC9saT5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgQWN0aW9uVGV4dE1peGluIGZyb20gJy4uLy4uL21peGlucy9hY3Rpb25UZXh0J1xuXG4vKipcbiAqIEJ1dHRvbiBjb21wb25lbnQgdG8gYmUgdXNlZCBpbiBBY3Rpb25zXG4qL1xuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnQWN0aW9uQnV0dG9uJyxcblxuXHRtaXhpbnM6IFtBY3Rpb25UZXh0TWl4aW5dLFxuXG5cdHByb3BzOiB7XG5cdFx0LyoqXG5cdFx0ICogZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGFjdGlvbiBidXR0b25cblx0XHQgKi9cblx0XHRkaXNhYmxlZDoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0LyoqXG5cdFx0ICogZGV0ZXJtaW5lcyBpZiB0aGUgYWN0aW9uIGlzIGZvY3VzYWJsZVxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufSBpcyB0aGUgYWN0aW9uIGZvY3VzYWJsZSA/XG5cdFx0ICovXG5cdFx0aXNGb2N1c2FibGUoKSB7XG5cdFx0XHRyZXR1cm4gIXRoaXMuZGlzYWJsZWRcblx0XHR9LFxuXHR9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbkBpbXBvcnQgJy4uLy4uL2Fzc2V0cy9hY3Rpb24nO1xuQGluY2x1ZGUgYWN0aW9uLWFjdGl2ZTtcbkBpbmNsdWRlIGFjdGlvbi0tZGlzYWJsZWQ7XG5AaW5jbHVkZSBhY3Rpb24taXRlbSgnYnV0dG9uJyk7XG48L3N0eWxlPlxuIiwiPCEtLVxuICAtIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAgLVxuICAtIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICAtIEBhdXRob3IgTWFyY28gQW1icm9zaW5pIDxtYXJjb2FtYnJvc2luaUBwbS5tZVxuICAtXG4gIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICAtIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICAtXG4gIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gIC0gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAgLVxuICAtLT5cblxuPCEtLSBBY2Nlc3NpYmlsaXR5IGd1aWRlbGluZXM6XG5odHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzL2V4YW1wbGVzL21lbnUtYnV0dG9uL21lbnUtYnV0dG9uLWFjdGlvbnMuaHRtbCAtLT5cblxuPGRvY3M+XG4jIyMgU2luZ2xlIGFjdGlvblxuXG5gYGBcbjxBY3Rpb25zPlxuXHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWRlbGV0ZVwiIEBjbGljaz1cImFsZXJ0KCdEZWxldGUnKVwiPkRlbGV0ZTwvQWN0aW9uQnV0dG9uPlxuPC9BY3Rpb25zPlxuYGBgXG5cbiMjIyBNdWx0aXBsZSBhY3Rpb25zXG5cbmBgYFxuPEFjdGlvbnM+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZWRpdFwiIEBjbGljaz1cImFsZXJ0KCdFZGl0JylcIj5FZGl0PC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZGVsZXRlXCIgQGNsaWNrPVwiYWxlcnQoJ0RlbGV0ZScpXCI+RGVsZXRlPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25MaW5rIGljb249XCJpY29uLWV4dGVybmFsXCIgdGl0bGU9XCJMaW5rXCIgaHJlZj1cImh0dHBzOi8vbmV4dGNsb3VkLmNvbVwiIC8+XG48L0FjdGlvbnM+XG5gYGBcblxuIyMjIE11bHRpcGxlIGFjdGlvbnMgd2l0aCBjdXN0b20gaWNvblxuXG5gYGBcbjxBY3Rpb25zIGRlZmF1bHQtaWNvbj1cImljb24tZWRpdFwiPlxuXHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWVkaXRcIiBAY2xpY2s9XCJhbGVydCgnRWRpdCcpXCI+RWRpdDwvQWN0aW9uQnV0dG9uPlxuXHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWRlbGV0ZVwiIEBjbGljaz1cImFsZXJ0KCdEZWxldGUnKVwiPkRlbGV0ZTwvQWN0aW9uQnV0dG9uPlxuXHQ8QWN0aW9uTGluayBpY29uPVwiaWNvbi1leHRlcm5hbFwiIHRpdGxlPVwiTGlua1wiIGhyZWY9XCJodHRwczovL25leHRjbG91ZC5jb21cIiAvPlxuPC9BY3Rpb25zPlxuYGBgXG5cbiMjIyBXaXRoIG1lbnUgdGl0bGVcblxuYGBgXG48QWN0aW9ucyBkZWZhdWx0LWljb249XCJpY29uLWVkaXRcIiBtZW51LXRpdGxlPVwiT2JqZWN0IG1hbmFnZW1lbnRcIj5cblx0PEFjdGlvbkJ1dHRvbiBpY29uPVwiaWNvbi1lZGl0XCI+UmVuYW1lPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZGVsZXRlXCI+RGVsZXRlPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tY29uZmlybVwiPlZhbGlkYXRlPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZG93bmxvYWRcIj5Eb3dubG9hZDwvQWN0aW9uQnV0dG9uPlxuPC9BY3Rpb25zPlxuYGBgXG5cbiMjIyBWYXJpb3VzIGljb25zIHN0eWxlc1xuYGBgXG48QWN0aW9ucyA6cHJpbWFyeT1cInRydWVcIj5cblx0PEFjdGlvbkJ1dHRvbiBpY29uPVwiaWNvbi1lZGl0XCI+RWRpdDwvQWN0aW9uQnV0dG9uPlxuXHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWRlbGV0ZVwiPkRlbGV0ZTwvQWN0aW9uQnV0dG9uPlxuPC9BY3Rpb25zPlxuYGBgXG5cbmBgYFxuPEFjdGlvbnMgZGVmYXVsdC1pY29uPVwiaWNvbi1hZGQtd2hpdGVcIiA6cHJpbWFyeT1cInRydWVcIiBtZW51LXRpdGxlPVwiT2JqZWN0IG1hbmFnZW1lbnRcIj5cblx0PEFjdGlvbkJ1dHRvbiBpY29uPVwiaWNvbi1lZGl0XCI+UmVuYW1lPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZGVsZXRlXCI+RGVsZXRlPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tY29uZmlybVwiPlZhbGlkYXRlPC9BY3Rpb25CdXR0b24+XG5cdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZG93bmxvYWRcIj5Eb3dubG9hZDwvQWN0aW9uQnV0dG9uPlxuPC9BY3Rpb25zPlxuYGBgXG5cbiMjIyBDdXN0b20gaWNvbiBzbG90XG5UbyBiZSB1c2VkIHdpdGggYHZ1ZS1tYXRlcmlhbC1kZXNpZ24taWNvbnNgIG9ubHkuIEZvciBpY29uIGNsYXNzZXMgdXNlIHRoZSBgZGVmYXVsdC1pY29uYCBzbG90LlxuSXQgY2FuIGJlIHVzZWQgd2l0aCBvbmUgb3IgbXVsdGlwbGUgYWN0aW9ucy5cbmBgYFxuPHRlbXBsYXRlPlxuXHQ8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDthbGlnbi1pdGVtczogY2VudGVyO1wiPlxuXHRcdDxidXR0b24gQGNsaWNrPVwidG9nZ2xlZCA9ICF0b2dnbGVkXCI+VG9nZ2xlIG11bHRpcGxlIGFjdGlvbjwvYnV0dG9uPlxuXHRcdDxBY3Rpb25zPlxuXHRcdFx0PERvdHNIb3Jpem9udGFsQ2lyY2xlT3V0bGluZVxuXHRcdFx0XHRzbG90PVwiaWNvblwiXG5cdFx0XHRcdDpzaXplPVwiMTZcIlxuXHRcdFx0XHRkZWNvcmF0aXZlIC8+XG5cdFx0XHQ8QWN0aW9uQnV0dG9uPlxuXHRcdFx0XHQ8TWljcm9waG9uZU9mZlxuXHRcdFx0XHRcdHNsb3Q9XCJpY29uXCJcblx0XHRcdFx0XHQ6c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRkZWNvcmF0aXZlIC8+XG5cdFx0XHRcdE11dGVcblx0XHRcdDwvQWN0aW9uQnV0dG9uPlxuXHRcdFx0PEFjdGlvbkJ1dHRvbiB2LWlmPVwidG9nZ2xlZFwiIGljb249XCJpY29uLWRlbGV0ZVwiPkRlbGV0ZTwvQWN0aW9uQnV0dG9uPlxuXHRcdDwvQWN0aW9ucz5cblx0XHQ8QWN0aW9ucz5cblx0XHQ8L0FjdGlvbnM+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgRG90c0hvcml6b250YWxDaXJjbGVPdXRsaW5lIGZyb20gJ3Z1ZS1tYXRlcmlhbC1kZXNpZ24taWNvbnMvRG90c0hvcml6b250YWxDaXJjbGVPdXRsaW5lJ1xuaW1wb3J0IE1pY3JvcGhvbmVPZmYgZnJvbSAndnVlLW1hdGVyaWFsLWRlc2lnbi1pY29ucy9NaWNyb3Bob25lT2ZmJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNvbXBvbmVudHM6IHtcblx0XHREb3RzSG9yaXpvbnRhbENpcmNsZU91dGxpbmUsXG5cdFx0TWljcm9waG9uZU9mZixcblx0fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9nZ2xlZDogZmFsc2Vcblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuYGBgXG5cbiMjIyBDdXN0b20gaWNvbiBzbG90IGluIGNoaWxkIGVsZW1lbnRzXG5gYGBcbjxBY3Rpb25zIDpwcmltYXJ5PVwidHJ1ZVwiPlxuXHQ8QWN0aW9uQnV0dG9uPjx0ZW1wbGF0ZSAjaWNvbj48TWFnbmlmeUljb24gLz48L3RlbXBsYXRlPlNlYXJjaDwvQWN0aW9uQnV0dG9uPlxuXHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWRlbGV0ZVwiPkRlbGV0ZTwvQWN0aW9uQnV0dG9uPlxuPC9BY3Rpb25zPlxuYGBgXG5cbjwvZG9jcz5cbjx0ZW1wbGF0ZT5cblx0PCEtLSBpZiBvbmx5IG9uZSBhY3Rpb24sIGNoZWNrIGlmIHdlIG5lZWQgdG8gYmluZCB0byBjbGljayBvciBub3QgLS0+XG5cdDxlbGVtZW50IHYtaWY9XCJpc1ZhbGlkU2luZ2xlQWN0aW9uICYmICFmb3JjZU1lbnVcIlxuXHRcdHYtdG9vbHRpcC5hdXRvPVwiZmlyc3RBY3Rpb24udGV4dFwiXG5cdFx0di1iaW5kPVwiZmlyc3RBY3Rpb25CaW5kaW5nXCJcblx0XHQ6Y2xhc3M9XCJ7XG5cdFx0XHRbZmlyc3RBY3Rpb24uaWNvbl06IGZpcnN0QWN0aW9uLmljb24sXG5cdFx0XHRbZmlyc3RBY3Rpb25DbGFzc106IGZpcnN0QWN0aW9uQ2xhc3MgfVwiXG5cdFx0Y2xhc3M9XCJhY3Rpb24taXRlbSBhY3Rpb24taXRlbS0tc2luZ2xlXCJcblx0XHRyZWw9XCJub3JlZmVycmVyIG5vb3BlbmVyXCJcblx0XHQ6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG5cdFx0QGZvY3VzPVwib25Gb2N1c1wiXG5cdFx0QGJsdXI9XCJvbkJsdXJcIlxuXHRcdEBbZmlyc3RBY3Rpb25FdmVudEJpbmRpbmddPVwiZXhlY0ZpcnN0QWN0aW9uXCI+XG5cdFx0PCEtLSBSZW5kZXIgdGhlIGljb24gc2xvdCBjb250ZW50IG9mIHRoZSBmaXJzdCBhY3Rpb24gLS0+XG5cdFx0PFZOb2RlcyA6dm5vZGVzPVwiZmlyc3RBY3Rpb25JY29uU2xvdFwiIC8+XG5cblx0XHQ8IS0tIGZha2Ugc2xvdCB0byBnYXRoZXIgbWFpbiBhY3Rpb24gLS0+XG5cdFx0PHNwYW4gOmFyaWEtaGlkZGVuPVwidHJ1ZVwiIGhpZGRlbj5cblx0XHRcdDwhLS0gQHNsb3QgQWxsIGFjdGlvbiBlbGVtZW50cyBwYXNzZWQgaW50byB0aGUgZGVmYXVsdCBzbG90IHdpbGwgYmUgdXNlZCAtLT5cblx0XHRcdDxzbG90IC8+XG5cdFx0PC9zcGFuPlxuXHQ8L2VsZW1lbnQ+XG5cblx0PCEtLSBtb3JlIHRoYW4gb25lIGFjdGlvbiAtLT5cblx0PGRpdiB2LWVsc2Vcblx0XHR2LXNob3c9XCJoYXNNdWx0aXBsZUFjdGlvbnMgfHwgZm9yY2VNZW51XCJcblx0XHQ6Y2xhc3M9XCJ7J2FjdGlvbi1pdGVtLS1vcGVuJzogb3BlbmVkfVwiXG5cdFx0Y2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuXHRcdDwhLS0gSWYgbW9yZSB0aGFuIG9uZSBhY3Rpb24sIGNyZWF0ZSBhIHBvcG92ZXJtZW51IC0tPlxuXHRcdDxQb3BvdmVyXG5cdFx0XHQ6ZGVsYXk9XCIwXCJcblx0XHRcdDpoYW5kbGUtcmVzaXplPVwidHJ1ZVwiXG5cdFx0XHQ6b3Blbi5zeW5jPVwib3BlbmVkXCJcblx0XHRcdDpwbGFjZW1lbnQ9XCJwbGFjZW1lbnRcIlxuXHRcdFx0OmJvdW5kYXJpZXMtZWxlbWVudD1cImJvdW5kYXJpZXNFbGVtZW50XCJcblx0XHRcdDpjb250YWluZXI9XCJjb250YWluZXJcIlxuXHRcdFx0QHNob3c9XCJvcGVuTWVudVwiXG5cdFx0XHRAYWZ0ZXItc2hvdz1cIm9uT3BlblwiXG5cdFx0XHRAaGlkZT1cImNsb3NlTWVudVwiPlxuXHRcdFx0PCEtLSBNZW51IG9wZW4vY2xvc2UgdHJpZ2dlciBidXR0b24gLS0+XG5cdFx0XHQ8YnV0dG9uIHNsb3Q9XCJ0cmlnZ2VyXCJcblx0XHRcdFx0cmVmPVwibWVudUJ1dHRvblwiXG5cdFx0XHRcdDpkaXNhYmxlZD1cImRpc2FibGVkXCJcblx0XHRcdFx0Y2xhc3M9XCJpY29uIGFjdGlvbi1pdGVtX19tZW51dG9nZ2xlXCJcblx0XHRcdFx0OmNsYXNzPVwie1xuXHRcdFx0XHRcdFtkZWZhdWx0SWNvbl06ICFpY29uU2xvdElzUG9wdWxhdGVkLFxuXHRcdFx0XHRcdCdhY3Rpb24taXRlbV9fbWVudXRvZ2dsZS0td2l0aC10aXRsZSc6IG1lbnVUaXRsZSxcblx0XHRcdFx0XHQnYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGUtLXByaW1hcnknOiBwcmltYXJ5XG5cdFx0XHRcdH1cIlxuXHRcdFx0XHQ6YXJpYS1sYWJlbD1cImFyaWFMYWJlbFwiXG5cdFx0XHRcdGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcblx0XHRcdFx0OmFyaWEtY29udHJvbHM9XCJyYW5kb21JZFwiXG5cdFx0XHRcdHRlc3QtYXR0cj1cIjFcIlxuXHRcdFx0XHQ6YXJpYS1leHBhbmRlZD1cIm9wZW5lZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuXHRcdFx0XHRAZm9jdXM9XCJvbkZvY3VzXCJcblx0XHRcdFx0QGJsdXI9XCJvbkJsdXJcIj5cblx0XHRcdFx0PHNsb3QgbmFtZT1cImljb25cIiAvPlxuXHRcdFx0XHR7eyBtZW51VGl0bGUgfX1cblx0XHRcdDwvYnV0dG9uPlxuXG5cdFx0XHQ8IS0tIE1lbnUgY29udGVudCAtLT5cblx0XHRcdDxkaXYgdi1zaG93PVwib3BlbmVkXCJcblx0XHRcdFx0cmVmPVwibWVudVwiXG5cdFx0XHRcdDpjbGFzcz1cInsgb3Blbjogb3BlbmVkIH1cIlxuXHRcdFx0XHR0YWJpbmRleD1cIi0xXCJcblx0XHRcdFx0QGtleWRvd24udXAuZXhhY3Q9XCJmb2N1c1ByZXZpb3VzQWN0aW9uXCJcblx0XHRcdFx0QGtleWRvd24uZG93bi5leGFjdD1cImZvY3VzTmV4dEFjdGlvblwiXG5cdFx0XHRcdEBrZXlkb3duLnRhYi5leGFjdD1cImZvY3VzTmV4dEFjdGlvblwiXG5cdFx0XHRcdEBrZXlkb3duLnNoaWZ0LnRhYi5leGFjdD1cImZvY3VzUHJldmlvdXNBY3Rpb25cIlxuXHRcdFx0XHRAa2V5ZG93bi5wYWdlLXVwLmV4YWN0PVwiZm9jdXNGaXJzdEFjdGlvblwiXG5cdFx0XHRcdEBrZXlkb3duLnBhZ2UtZG93bi5leGFjdD1cImZvY3VzTGFzdEFjdGlvblwiXG5cdFx0XHRcdEBrZXlkb3duLmVzYy5leGFjdC5wcmV2ZW50PVwiY2xvc2VNZW51XCJcblx0XHRcdFx0QG1vdXNlbW92ZT1cIm9uTW91c2VGb2N1c0FjdGlvblwiPlxuXHRcdFx0XHQ8IS0tIG1lbnUgY29udGVudCAtLT5cblx0XHRcdFx0PHVsIDppZD1cInJhbmRvbUlkXCIgdGFiaW5kZXg9XCItMVwiPlxuXHRcdFx0XHRcdDx0ZW1wbGF0ZSB2LWlmPVwib3BlbmVkXCI+XG5cdFx0XHRcdFx0XHQ8c2xvdCAvPlxuXHRcdFx0XHRcdDwvdGVtcGxhdGU+XG5cdFx0XHRcdDwvdWw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L1BvcG92ZXI+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgVG9vbHRpcCBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL1Rvb2x0aXAnXG5pbXBvcnQgR2VuUmFuZG9tSWQgZnJvbSAnLi4vLi4vdXRpbHMvR2VuUmFuZG9tSWQnXG5pbXBvcnQgVmFsaWRhdGVTbG90IGZyb20gJy4uLy4uL3V0aWxzL1ZhbGlkYXRlU2xvdCdcbmltcG9ydCB7IHQgfSBmcm9tICcuLi8uLi9sMTBuJ1xuaW1wb3J0IFBvcG92ZXIgZnJvbSAnLi4vUG9wb3ZlcidcblxuLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBBTEwgdGhlIEFMTE9XRUQgY29tcG9uZW50c1xuLy8gaW4gdGhlIGRlZmF1bHQgU0xPVFxuY29uc3QgYWxsb3dlZENoaWxkcmVuID0gW1xuXHQnQWN0aW9uQnV0dG9uJyxcblx0J0FjdGlvbkNoZWNrYm94Jyxcblx0J0FjdGlvbklucHV0Jyxcblx0J0FjdGlvbkxpbmsnLFxuXHQnQWN0aW9uUmFkaW8nLFxuXHQnQWN0aW9uUm91dGVyJyxcblx0J0FjdGlvblNlcGFyYXRvcicsXG5cdCdBY3Rpb25UZXh0Jyxcblx0J0FjdGlvblRleHRFZGl0YWJsZScsXG5dXG5cbmNvbnN0IGZvY3VzYWJsZVNlbGVjdG9yID0gJy5mb2N1c2FibGUnXG5cbi8qKlxuICogVGhlIEFjdGlvbnMgY29tcG9uZW50IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgb25lIG9yZSBtb3JlIGFjdGlvbnMuXG4gKiBJZiBvbmx5IGEgc2luZ2xlIGFjdGlvbiBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSByZW5kZXJlZCBhcyBhbiBpbmxpbmUgaWNvbi5cbiAqIEZvciBtb3JlLCBhIG1lbnUgaW5kaWNhdG9yIHdpbGwgYmUgc2hvd24gYW5kIGEgcG9wb3Zlcm1lbnUgY29udGFpbmluZyB0aGVcbiAqIGFjdGlvbnMgd2lsbCBiZSBvcGVuZWQgb24gY2xpY2suXG4gKlxuICogQHNpbmNlIDAuMTAuMFxuICovXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICdBY3Rpb25zJyxcblxuXHRkaXJlY3RpdmVzOiB7XG5cdFx0dG9vbHRpcDogVG9vbHRpcCxcblx0fSxcblxuXHRjb21wb25lbnRzOiB7XG5cdFx0UG9wb3ZlcixcblxuXHRcdC8vIENvbXBvbmVudCB0byByZW5kZXIgdGhlIGZpcnN0IGFjdGlvbiBpY29uIHNsb3QgY29udGVudCAodm5vZGVzKVxuXHRcdFZOb2Rlczoge1xuXHRcdFx0ZnVuY3Rpb25hbDogdHJ1ZSxcblx0XHRcdHJlbmRlcjogKGgsIGNvbnRleHQpID0+IGNvbnRleHQucHJvcHMudm5vZGVzLFxuXHRcdH0sXG5cdH0sXG5cblx0cHJvcHM6IHtcblx0XHQvKipcblx0XHQgKiBTcGVjaWZ5IHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBwb3BvdmVyIG1lbnVcblx0XHQgKi9cblx0XHRvcGVuOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEZvcmNlIHRoZSBhY3Rpb25zIHRvIGRpc3BsYXkgaW4gYSB0aHJlZSBkb3QgbWVudVxuXHRcdCAqL1xuXHRcdGZvcmNlTWVudToge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBTcGVjaWZ5IHRoZSBtZW51IHRpdGxlXG5cdFx0ICovXG5cdFx0bWVudVRpdGxlOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBBcHBseSBwcmltYXJ5IHN0eWxpbmcgZm9yIHRoaXMgbWVudVxuXHRcdCAqL1xuXHRcdHByaW1hcnk6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogSWNvbiB0byBzaG93IGZvciB0aGUgdG9nZ2xlIG1lbnUgYnV0dG9uXG5cdFx0ICogd2hlbiBtb3JlIHRoYW4gb25lIGFjdGlvbiBpcyBpbnNpZGUgdGhlIGFjdGlvbnMgY29tcG9uZW50LlxuXHRcdCAqIE9ubHkgcmVwbGFjZSB0aGUgZGVmYXVsdCB0aHJlZS1kb3QgaWNvbiBpZiByZWFsbHkgbmVjZXNzYXJ5LlxuXHRcdCAqL1xuXHRcdGRlZmF1bHRJY29uOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGUtLWRlZmF1bHQtaWNvbicsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFyaWEgbGFiZWwgZm9yIHRoZSBhY3Rpb25zIG1lbnVcblx0XHQgKi9cblx0XHRhcmlhTGFiZWw6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IHQoJ0FjdGlvbnMnKSxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogV2FudGVkIGRpcmVjdGlvbiBvZiB0aGUgbWVudVxuXHRcdCAqL1xuXHRcdHBsYWNlbWVudDoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJ2JvdHRvbScsXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIERPTSBlbGVtZW50IGZvciB0aGUgYWN0aW9ucycgcG9wb3ZlciBib3VuZGFyaWVzXG5cdFx0ICovXG5cdFx0Ym91bmRhcmllc0VsZW1lbnQ6IHtcblx0XHRcdHR5cGU6IEVsZW1lbnQsXG5cdFx0XHRkZWZhdWx0OiAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JyksXG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNlbGVjdG9yIGZvciB0aGUgYWN0aW9ucycgcG9wb3ZlciBjb250YWluZXJcblx0XHQgKi9cblx0XHRjb250YWluZXI6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6ICdib2R5Jyxcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogRGlzYWJsZWQgc3RhdGUgb2YgdGhlIG1haW4gYnV0dG9uIChzaW5nbGUgYWN0aW9uIG9yIG1lbnUgdG9nZ2xlKVxuXHRcdCAqL1xuXHRcdGRpc2FibGVkOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblx0fSxcblxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRhY3Rpb25zOiBbXSxcblx0XHRcdG9wZW5lZDogdGhpcy5vcGVuLFxuXHRcdFx0Zm9jdXNJbmRleDogMCxcblx0XHRcdHJhbmRvbUlkOiAnbWVudS0nICsgR2VuUmFuZG9tSWQoKSxcblx0XHRcdC8vIE1ha2luZyBjaGlsZHJlbiByZWFjdGl2ZSFcblx0XHRcdC8vIEJ5IGJpbmRpbmcgdGhpcyBoZXJlLCB2dWVqcyB3aWxsIHRyYWNrIHRoZSBvYmplY3QgY29udGVudFxuXHRcdFx0Ly8gTmVlZGVkIGZvciBmaXJzdEFjdGlvbiByZWFjdGl2aXR5ICEhIVxuXHRcdFx0Y2hpbGRyZW46IHRoaXMuJGNoaWxkcmVuLFxuXHRcdH1cblx0fSxcblxuXHRjb21wdXRlZDoge1xuXHRcdC8qKlxuXHRcdCAqIElzIHRoZXJlIG1vcmUgdGhhbiBvbmUgYWN0aW9uP1xuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHRcdCAqL1xuXHRcdGhhc011bHRpcGxlQWN0aW9ucygpIHtcblx0XHRcdHJldHVybiB0aGlzLmFjdGlvbnMubGVuZ3RoID4gMVxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogSXMgdGhlcmUgYW55IGZpcnN0IGFjdGlvbiA/XG5cdFx0ICogQW5kIGlzIGl0IGFsbG93ZWQgYXMgYSBzdGFuZGFsb25lIGVsZW1lbnQgP1xuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHRcdCAqL1xuXHRcdGlzVmFsaWRTaW5nbGVBY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hY3Rpb25zLmxlbmd0aCA9PT0gMVxuXHRcdFx0XHQmJiB0aGlzLmZpcnN0QWN0aW9uRWxlbWVudCAhPT0gbnVsbFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRmlyc3QgYWN0aW9uIHZub2RlXG5cdFx0ICogQHJldHVybnMge09iamVjdH0gcmV0dXJuIHRoZSBmaXJzdCBhY3Rpb24gdnVlIHZub2RlXG5cdFx0ICovXG5cdFx0Zmlyc3RBY3Rpb25WTm9kZSgpIHtcblx0XHRcdHJldHVybiB0aGlzLmFjdGlvbnNbMF1cblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFJlYWN0aXZlIGJpbmRpbmcgdG8gdGhlIGZpcnN0IGNoaWxkcmVuXG5cdFx0ICogU2luY2Ugd2UncmUgaGVyZSwgaXQgbWVhbnMgd2UgYWxyZWFkeSBwYXNzZWQgYWxsIHRoZSBwcm9wZXIgY2hlY2tzXG5cdFx0ICogd2UgY2FuIGFzc3VtZSB0aGUgZmlyc3QgYWN0aW9uIGlzIHRoZSBmaXJzdCBjaGlsZHJlbiB0b29cblx0XHQgKiBAcmV0dXJucyB7T2JqZWN0fSBmaXJzdCBhY3Rpb24gdnVlIGNoaWxkcmVuIG9iamVjdFxuXHRcdCAqL1xuXHRcdGZpcnN0QWN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY2hpbGRyZW5bMF1cblx0XHRcdFx0PyB0aGlzLmNoaWxkcmVuWzBdXG5cdFx0XHRcdDoge31cblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQmluZGluZyBvZiB0aGUgZmlyc3QgYWN0aW9uIHRvIHRoZSB0ZW1wbGF0ZVxuXHRcdCAqIEByZXR1cm5zIHtPYmplY3R9IHZ1ZSB0ZW1wbGF0ZSB2LWJpbmQgc2hvcnRjdXRcblx0XHQgKi9cblx0XHRmaXJzdEFjdGlvbkJpbmRpbmcoKSB7XG5cdFx0XHRpZiAodGhpcy5maXJzdEFjdGlvblZOb2RlICYmIHRoaXMuZmlyc3RBY3Rpb25WTm9kZS5jb21wb25lbnRPcHRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IHRhZyA9IHRoaXMuZmlyc3RBY3Rpb25WTm9kZS5jb21wb25lbnRPcHRpb25zLnRhZ1xuXHRcdFx0XHRpZiAodGFnID09PSAnQWN0aW9uTGluaycpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0aXM6ICdhJyxcblx0XHRcdFx0XHRcdGhyZWY6IHRoaXMuZmlyc3RBY3Rpb24uaHJlZixcblx0XHRcdFx0XHRcdHRhcmdldDogdGhpcy5maXJzdEFjdGlvbi50YXJnZXQsXG5cdFx0XHRcdFx0XHQnYXJpYS1sYWJlbCc6IHRoaXMuZmlyc3RBY3Rpb24uYXJpYUxhYmVsLFxuXHRcdFx0XHRcdFx0Li4udGhpcy5maXJzdEFjdGlvbi4kYXR0cnMsXG5cdFx0XHRcdFx0XHQuLi50aGlzLmZpcnN0QWN0aW9uLiRwcm9wcyxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRhZyA9PT0gJ0FjdGlvblJvdXRlcicpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0aXM6ICdyb3V0ZXItbGluaycsXG5cdFx0XHRcdFx0XHR0bzogdGhpcy5maXJzdEFjdGlvbi50byxcblx0XHRcdFx0XHRcdGV4YWN0OiB0aGlzLmZpcnN0QWN0aW9uLmV4YWN0LFxuXHRcdFx0XHRcdFx0J2FyaWEtbGFiZWwnOiB0aGlzLmZpcnN0QWN0aW9uLmFyaWFMYWJlbCxcblx0XHRcdFx0XHRcdC4uLnRoaXMuZmlyc3RBY3Rpb24uJGF0dHJzLFxuXHRcdFx0XHRcdFx0Li4udGhpcy5maXJzdEFjdGlvbi4kcHJvcHMsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0YWcgPT09ICdBY3Rpb25CdXR0b24nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGlzOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdCdhcmlhLWxhYmVsJzogdGhpcy5maXJzdEFjdGlvbi5hcmlhTGFiZWwsXG5cdFx0XHRcdFx0XHQuLi50aGlzLmZpcnN0QWN0aW9uLiRhdHRycyxcblx0XHRcdFx0XHRcdC4uLnRoaXMuZmlyc3RBY3Rpb24uJHByb3BzLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gb3RoZXIgYWN0aW9uIHR5cGVzIGFyZSBub3QgYWxsb3dlZCBhcyBzdGFuZGFsb25lIGJ1dHRvbnNcblx0XHRcdHJldHVybiBudWxsXG5cdFx0fSxcblxuXHRcdC8vIHJldHVybiB0aGUgZXZlbnQgdG8gYmluZCBpZiB0aGUgZmlyc3RBY3Rpb25WTm9kZSBoYXZlIGFuIGFjdGlvblxuXHRcdGZpcnN0QWN0aW9uRXZlbnQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5maXJzdEFjdGlvblZOb2RlPy5jb21wb25lbnRPcHRpb25zPy5saXN0ZW5lcnM/LmNsaWNrXG5cdFx0fSxcblx0XHRmaXJzdEFjdGlvbkV2ZW50QmluZGluZygpIHtcblx0XHRcdHJldHVybiB0aGlzLmZpcnN0QWN0aW9uRXZlbnQgPyAnY2xpY2snIDogbnVsbFxuXHRcdH0sXG5cdFx0Ly8gcmV0dXJuIHRoZSBmaXJzdCBhY3Rpb24gaWNvbiBzbG90IHZub2RlcyBhcnJheVxuXHRcdGZpcnN0QWN0aW9uSWNvblNsb3QoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5maXJzdEFjdGlvbj8uJHNsb3RzPy5pY29uXG5cdFx0fSxcblx0XHRmaXJzdEFjdGlvbkNsYXNzKCkge1xuXHRcdFx0Y29uc3Qgc3RhdGljQ2xhc3MgPSB0aGlzLmZpcnN0QWN0aW9uVk5vZGUgJiYgdGhpcy5maXJzdEFjdGlvblZOb2RlLmRhdGEuc3RhdGljQ2xhc3Ncblx0XHRcdGNvbnN0IGR5bkNsYXNzID0gdGhpcy5maXJzdEFjdGlvblZOb2RlICYmIHRoaXMuZmlyc3RBY3Rpb25WTm9kZS5kYXRhLmNsYXNzXG5cdFx0XHRyZXR1cm4gKHN0YXRpY0NsYXNzICsgJyAnICsgZHluQ2xhc3MpLnRyaW0oKVxuXHRcdH0sXG5cblx0XHRpY29uU2xvdElzUG9wdWxhdGVkKCkge1xuXHRcdFx0cmV0dXJuICEhdGhpcy4kc2xvdHMuaWNvblxuXHRcdH0sXG5cdH0sXG5cblx0d2F0Y2g6IHtcblx0XHQvLyBXYXRjaCBwYXJlbnQgcHJvcFxuXHRcdG9wZW4oc3RhdGUpIHtcblx0XHRcdGlmIChzdGF0ZSA9PT0gdGhpcy5vcGVuZWQpIHtcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cblx0XHRcdHRoaXMub3BlbmVkID0gc3RhdGVcblx0XHR9LFxuXHR9LFxuXHRiZWZvcmVNb3VudCgpIHtcblx0XHQvLyBpbml0IGFjdGlvbnNcblx0XHR0aGlzLmluaXRBY3Rpb25zKClcblxuXHRcdC8vIGZpbHRlciBpbnZhbGlkIG1lbnUgaXRlbXNcblx0XHRWYWxpZGF0ZVNsb3QodGhpcy4kc2xvdHMuZGVmYXVsdCwgYWxsb3dlZENoaWxkcmVuLCB0aGlzKVxuXHR9LFxuXHRiZWZvcmVVcGRhdGUoKSB7XG5cdFx0Ly8gISBzaW5jZSB3ZSdyZSB1c2luZyAkc2xvdHMgdG8gbWFuYWdlIG91ciBhY3Rpb25zXG5cdFx0Ly8gISB3ZSBORUVEIHRvIHVwZGF0ZSB0aGUgYWN0aW9ucyBpZiBhbnl0aGluZyBjaGFuZ2VcblxuXHRcdC8vIHVwZGF0ZSBjaGlsZHJlbiAmIGFjdGlvbnNcblx0XHQvLyBubyBuZWVkIHRvIGluaXQgYWN0aW9ucyBhZ2FpbiBzaW5jZSB3ZSBib3VuZCBpdCB0byAkY2hpbGRyZW5cblx0XHQvLyBhbmQgdGhlIGFycmF5IGlzIG5vdyByZWFjdGl2ZVxuXHRcdC8vIGluaXQgYWN0aW9uc1xuXHRcdHRoaXMuaW5pdEFjdGlvbnMoKVxuXHRcdFZhbGlkYXRlU2xvdCh0aGlzLiRzbG90cy5kZWZhdWx0LCBhbGxvd2VkQ2hpbGRyZW4sIHRoaXMpXG5cdH0sXG5cblx0bWV0aG9kczoge1xuXHRcdC8vIE1FTlUgU1RBVEUgTUFOQUdFTUVOVFxuXHRcdG9wZW5NZW51KGUpIHtcblx0XHRcdGlmICh0aGlzLm9wZW5lZCkge1xuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5vcGVuZWQgPSB0cnVlXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIG1lbnUgb3BlbiBzdGF0ZSBpcyBjaGFuZ2VkXG5cdFx0XHQgKiBAdHlwZSB7Ym9vbGVhbn1cblx0XHRcdCAqL1xuXHRcdFx0dGhpcy4kZW1pdCgndXBkYXRlOm9wZW4nLCB0cnVlKVxuXG5cdFx0XHQvKipcblx0XHRcdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBtZW51IGlzIGNsb3NlZFxuXHRcdFx0ICovXG5cdFx0XHR0aGlzLiRlbWl0KCdvcGVuJylcblx0XHR9LFxuXHRcdGNsb3NlTWVudShlKSB7XG5cdFx0XHRpZiAoIXRoaXMub3BlbmVkKSB7XG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLm9wZW5lZCA9IGZhbHNlXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIG1lbnUgb3BlbiBzdGF0ZSBpcyBjaGFuZ2VkXG5cdFx0XHQgKiBAdHlwZSB7Ym9vbGVhbn1cblx0XHRcdCAqL1xuXHRcdFx0dGhpcy4kZW1pdCgndXBkYXRlOm9wZW4nLCBmYWxzZSlcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvcG92ZXIgbWVudSBpcyBjbG9zZWRcblx0XHRcdCAqL1xuXHRcdFx0dGhpcy4kZW1pdCgnY2xvc2UnKVxuXG5cdFx0XHQvLyBjbG9zZSBldmVyeXRoaW5nXG5cdFx0XHR0aGlzLm9wZW5lZCA9IGZhbHNlXG5cdFx0XHR0aGlzLmZvY3VzSW5kZXggPSAwXG5cblx0XHRcdC8vIGZvY3VzIGJhY2sgdGhlIG1lbnUgYnV0dG9uXG5cdFx0XHR0aGlzLiRyZWZzLm1lbnVCdXR0b24uZm9jdXMoKVxuXHRcdH0sXG5cblx0XHRvbk9wZW4oZXZlbnQpIHtcblx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcblx0XHRcdFx0dGhpcy5mb2N1c0ZpcnN0QWN0aW9uKGV2ZW50KVxuXHRcdFx0fSlcblx0XHR9LFxuXG5cdFx0Ly8gTUVOVSBLRVlTICYgRk9DVVMgTUFOQUdFTUVOVFxuXHRcdC8vIGZvY3VzIG5lYXJlc3QgZm9jdXNhYmxlIGl0ZW0gb24gbW91c2UgbW92ZVxuXHRcdC8vIERPIE5PVCBjaGFuZ2UgdGhlIGZvY3VzIGlmIHRoZSB0YXJnZXQgaXMgYWxyZWFkeSBmb2N1c2VkXG5cdFx0Ly8gdGhpcyB3aWxsIHByZXZlbnQgaXNzdWVzIHdpdGggaW5wdXQgYmVpbmcgdW5mb2N1c2VkXG5cdFx0Ly8gb24gbW91c2UgbW92ZVxuXHRcdG9uTW91c2VGb2N1c0FjdGlvbihldmVudCkge1xuXHRcdFx0aWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGV2ZW50LnRhcmdldCkge1xuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBldmVudC50YXJnZXQuY2xvc2VzdCgnbGknKVxuXHRcdFx0aWYgKG1lbnVJdGVtKSB7XG5cdFx0XHRcdGNvbnN0IGZvY3VzYWJsZUl0ZW0gPSBtZW51SXRlbS5xdWVyeVNlbGVjdG9yKGZvY3VzYWJsZVNlbGVjdG9yKVxuXHRcdFx0XHRpZiAoZm9jdXNhYmxlSXRlbSkge1xuXHRcdFx0XHRcdGNvbnN0IGZvY3VzTGlzdCA9IHRoaXMuJHJlZnMubWVudS5xdWVyeVNlbGVjdG9yQWxsKGZvY3VzYWJsZVNlbGVjdG9yKVxuXHRcdFx0XHRcdGNvbnN0IGZvY3VzSW5kZXggPSBbLi4uZm9jdXNMaXN0XS5pbmRleE9mKGZvY3VzYWJsZUl0ZW0pXG5cdFx0XHRcdFx0aWYgKGZvY3VzSW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdFx0dGhpcy5mb2N1c0luZGV4ID0gZm9jdXNJbmRleFxuXHRcdFx0XHRcdFx0dGhpcy5mb2N1c0FjdGlvbigpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRyZW1vdmVDdXJyZW50QWN0aXZlKCkge1xuXHRcdFx0Y29uc3QgY3VycmVudEFjdGl2ZUVsZW1lbnQgPSB0aGlzLiRyZWZzLm1lbnUucXVlcnlTZWxlY3RvcignbGkuYWN0aXZlJylcblx0XHRcdGlmIChjdXJyZW50QWN0aXZlRWxlbWVudCkge1xuXHRcdFx0XHRjdXJyZW50QWN0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Zm9jdXNBY3Rpb24oKSB7XG5cdFx0XHQvLyBUT0RPOiBoYXZlIGEgZ2xvYmFsIGRpc2FibGVkIHN0YXRlIGZvciBub24gaW5wdXQgZWxlbWVudHNcblx0XHRcdGNvbnN0IGZvY3VzRWxlbWVudCA9IHRoaXMuJHJlZnMubWVudS5xdWVyeVNlbGVjdG9yQWxsKGZvY3VzYWJsZVNlbGVjdG9yKVt0aGlzLmZvY3VzSW5kZXhdXG5cdFx0XHRpZiAoZm9jdXNFbGVtZW50KSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlQ3VycmVudEFjdGl2ZSgpXG5cdFx0XHRcdGNvbnN0IGxpTWVudVBhcmVudCA9IGZvY3VzRWxlbWVudC5jbG9zZXN0KCdsaS5hY3Rpb24nKVxuXHRcdFx0XHRmb2N1c0VsZW1lbnQuZm9jdXMoKVxuXHRcdFx0XHRpZiAobGlNZW51UGFyZW50KSB7XG5cdFx0XHRcdFx0bGlNZW51UGFyZW50LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdGZvY3VzUHJldmlvdXNBY3Rpb24oZXZlbnQpIHtcblx0XHRcdGlmICh0aGlzLm9wZW5lZCkge1xuXHRcdFx0XHRpZiAodGhpcy5mb2N1c0luZGV4ID09PSAwKSB7XG5cdFx0XHRcdFx0Ly8gRmlyc3QgZWxlbWVudCBvdmVyZmxvd3MgdG8gYm9keS1uYXZpZ2F0aW9uIChubyBwcmV2ZW50RGVmYXVsdCEpIGFuZCBjbG9zZXMgQWN0aW9ucy1tZW51XG5cdFx0XHRcdFx0dGhpcy5jbG9zZU1lbnUoKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMucHJldmVudElmRXZlbnQoZXZlbnQpXG5cdFx0XHRcdFx0dGhpcy5mb2N1c0luZGV4ID0gdGhpcy5mb2N1c0luZGV4IC0gMVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuZm9jdXNBY3Rpb24oKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Zm9jdXNOZXh0QWN0aW9uKGV2ZW50KSB7XG5cdFx0XHRpZiAodGhpcy5vcGVuZWQpIHtcblx0XHRcdFx0Y29uc3QgaW5kZXhMZW5ndGggPSB0aGlzLiRyZWZzLm1lbnUucXVlcnlTZWxlY3RvckFsbChmb2N1c2FibGVTZWxlY3RvcikubGVuZ3RoIC0gMVxuXHRcdFx0XHRpZiAodGhpcy5mb2N1c0luZGV4ID09PSBpbmRleExlbmd0aCkge1xuXHRcdFx0XHRcdC8vIExhc3QgZWxlbWVudCBvdmVyZmxvd3MgdG8gYm9keS1uYXZpZ2F0aW9uIChubyBwcmV2ZW50RGVmYXVsdCEpIGFuZCBjbG9zZXMgQWN0aW9ucy1tZW51XG5cdFx0XHRcdFx0dGhpcy5jbG9zZU1lbnUoKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMucHJldmVudElmRXZlbnQoZXZlbnQpXG5cdFx0XHRcdFx0dGhpcy5mb2N1c0luZGV4ID0gdGhpcy5mb2N1c0luZGV4ICsgMVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuZm9jdXNBY3Rpb24oKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Zm9jdXNGaXJzdEFjdGlvbihldmVudCkge1xuXHRcdFx0aWYgKHRoaXMub3BlbmVkKSB7XG5cdFx0XHRcdHRoaXMucHJldmVudElmRXZlbnQoZXZlbnQpXG5cdFx0XHRcdHRoaXMuZm9jdXNJbmRleCA9IDBcblx0XHRcdFx0dGhpcy5mb2N1c0FjdGlvbigpXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmb2N1c0xhc3RBY3Rpb24oZXZlbnQpIHtcblx0XHRcdGlmICh0aGlzLm9wZW5lZCkge1xuXHRcdFx0XHR0aGlzLnByZXZlbnRJZkV2ZW50KGV2ZW50KVxuXHRcdFx0XHR0aGlzLmZvY3VzSW5kZXggPSB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKGZvY3VzYWJsZVNlbGVjdG9yKS5sZW5ndGggLSAxXG5cdFx0XHRcdHRoaXMuZm9jdXNBY3Rpb24oKVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRwcmV2ZW50SWZFdmVudChldmVudCkge1xuXHRcdFx0aWYgKGV2ZW50KSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KClcblx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Ly8gQUNUSU9OUyBNQU5BR0VNRU5UXG5cdFx0Ly8gZXhlYyB0aGUgZmlyc3QgYWN0aW9uXG5cdFx0ZXhlY0ZpcnN0QWN0aW9uKGV2ZW50KSB7XG5cdFx0XHRpZiAodGhpcy5maXJzdEFjdGlvbkV2ZW50KSB7XG5cdFx0XHRcdHRoaXMuZmlyc3RBY3Rpb25FdmVudChldmVudClcblx0XHRcdH1cblx0XHR9LFxuXHRcdGluaXRBY3Rpb25zKCkge1xuXHRcdFx0Ly8gZmlsdGVyIG91dCBpbnZhbGlkIHNsb3RzXG5cdFx0XHR0aGlzLmFjdGlvbnMgPSAodGhpcy4kc2xvdHMuZGVmYXVsdCB8fCBbXSkuZmlsdGVyKG5vZGUgPT4gISFub2RlICYmICEhbm9kZS5jb21wb25lbnRPcHRpb25zKVxuXHRcdH0sXG5cdFx0b25Gb2N1cyhldmVudCkge1xuXHRcdFx0dGhpcy4kZW1pdCgnZm9jdXMnLCBldmVudClcblx0XHR9LFxuXHRcdG9uQmx1cihldmVudCkge1xuXHRcdFx0dGhpcy4kZW1pdCgnYmx1cicsIGV2ZW50KVxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuQGltcG9ydCAnLi4vLi4vZm9udHMvc2Nzcy9pY29uZm9udC12dWUnO1xuXG4uYWN0aW9uLWl0ZW0ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHQvLyBwdXQgYSBncmV5IHJvdW5kIGJhY2tncm91bmQgd2hlbiBtZW51IGlzIG9wZW5lZFxuXHQvLyBvciBob3Zlci1mb2N1c2VkXG5cdCYtLXNpbmdsZTpob3Zlcixcblx0Ji0tc2luZ2xlOmZvY3VzLFxuXHQmLS1zaW5nbGU6YWN0aXZlLFxuXHQmX19tZW51dG9nZ2xlOmhvdmVyLFxuXHQmX19tZW51dG9nZ2xlOmZvY3VzLFxuXHQmX19tZW51dG9nZ2xlOmFjdGl2ZSB7XG5cdFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcblx0XHQvLyBnb29kIGxvb2tpbmcgb24gZGFyayBBTkQgd2hpdGUgYmdcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkaWNvbi1mb2N1cy1iZztcblx0fVxuXG5cdC8vIFRPRE86IGhhbmRsZSB0aGlzIGluIHRoZSBmdXR1cmUgYnV0dG9uIGNvbXBvbmVudFxuXHQmX19tZW51dG9nZ2xlOmRpc2FibGVkLFxuXHQmLS1zaW5nbGU6ZGlzYWJsZWQge1xuXHRcdG9wYWNpdHk6IC4zICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQmLmFjdGlvbi1pdGVtLS1vcGVuIC5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZSB7XG5cdFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aW9uLWJhY2tncm91bmQtaG92ZXI7XG5cdH1cblxuXHQvLyBpY29uc1xuXHQmLS1zaW5nbGUsXG5cdCZfX21lbnV0b2dnbGUge1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWluLXdpZHRoOiAkY2xpY2thYmxlLWFyZWE7XG5cdFx0aGVpZ2h0OiAkY2xpY2thYmxlLWFyZWE7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6ICRpY29uLW1hcmdpbjtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRjbGlja2FibGUtYXJlYSAvIDI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdH1cblxuXHQvLyBpY29uLW1vcmVcblx0Jl9fbWVudXRvZ2dsZSB7XG5cdFx0Ly8gYWxpZ24gbWVudSBpY29uIGluIGNlbnRlclxuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRvcGFjaXR5OiAkb3BhY2l0eV9ub3JtYWw7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0bGluZS1oZWlnaHQ6ICRpY29uLXNpemU7XG5cblx0XHQvLyBpbWFnZSBzbG90XG5cdFx0L2RlZXAvIHNwYW4ge1xuXHRcdFx0d2lkdGg6ICRpY29uLXNpemU7XG5cdFx0XHRoZWlnaHQ6ICRpY29uLXNpemU7XG5cdFx0XHRsaW5lLWhlaWdodDogJGljb24tc2l6ZTtcblx0XHR9XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHR9XG5cblx0XHQmLS1kZWZhdWx0LWljb24ge1xuXHRcdFx0QGluY2x1ZGUgaWNvbmZvbnQoJ21vcmUnKTtcblx0XHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogJGljb24tc2l6ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLS13aXRoLXRpdGxlIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdHBhZGRpbmctbGVmdDogJGNsaWNrYWJsZS1hcmVhO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG9wYWNpdHk6ICRvcGFjaXR5X2Z1bGw7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItZGFyayk7XG5cdFx0XHQvLyB3aXRoIGEgdGl0bGUsIHdlIG5lZWQgdG8gZGlzcGxheSB0aGlzIGFzIGEgcmVhbCBidXR0b25cblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFyayk7XG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkaWNvbi1tYXJnaW4gY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRcdFx0Ly8gbm9uLWJhY2tncm91bmQgaWNvbiBjbGFzc1xuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRvcDogJGljb24tbWFyZ2luO1xuXHRcdFx0XHRsZWZ0OiAkaWNvbi1tYXJnaW47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji0tcHJpbWFyeSB7XG5cdFx0XHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsO1xuXHRcdFx0Y29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWVsZW1lbnQpO1xuXHRcdFx0LmFjdGlvbi1pdGVtLS1vcGVuICYsXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Jjpmb2N1cyxcblx0XHRcdCY6YWN0aXZlIHtcblx0XHRcdFx0Y29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCkgIWltcG9ydGFudDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50LWxpZ2h0KSAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYtLXNpbmdsZSB7XG5cdFx0b3BhY2l0eTogJG9wYWNpdHlfbm9ybWFsO1xuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyxcblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsO1xuXHRcdH1cblx0XHQvLyBoaWRlIGFueXRoaW5nIHRoZSBzbG90IGlzIGRpc3BsYXlpbmdcblx0XHQmID4gW2hpZGRlbl0ge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLmllLFxuLmVkZ2Uge1xuXHQuYWN0aW9uLWl0ZW1fX21lbnUsXG5cdC5hY3Rpb24taXRlbV9fbWVudSAuYWN0aW9uLWl0ZW1fX21lbnVfYXJyb3cge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdH1cbn1cblxuPC9zdHlsZT5cbiIsIjwhLS1cbiAtIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IE1hcmNvIEFtYnJvc2luaSA8bWFyY29hbWJyb3NpbmlAcG0ubWU+XG4gLVxuIC0gQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuIC1cbiAtIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuIC1cbiAtIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gLSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gLSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuIC1cbiAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuIC0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAtIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gLVxuIC0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuIC1cbiAtLT5cblxuPHRlbXBsYXRlPlxuXHQ8IS0tIEJ1dHRvbiB0byBleHBhbmQgb3IgY29sbGFwc2UgY2hpbGRyZW4gLS0+XG5cdDxidXR0b25cblx0XHRjbGFzcz1cImljb24tY29sbGFwc2VcIlxuXHRcdDpjbGFzcz1cInsnaWNvbi1jb2xsYXBzZS0tcm90YXRlZCc6b3Blbn1cIlxuXHRcdEBjbGljaz1cIm9uQ2xpY2tcIiAvPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcblx0bmFtZTogJ0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUnLFxuXG5cdHByb3BzOiB7XG5cdFx0b3Blbjoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IHRydWUsXG5cdFx0fSxcblx0fSxcblxuXHRtZXRob2RzOiB7XG5cdFx0b25DbGljayhlKSB7XG5cdFx0XHR0aGlzLiRlbWl0KCdjbGljaycsIGUpXG5cdFx0fSxcblx0fSxcblxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbkBpbXBvcnQgJy4uLy4uL2ZvbnRzL3Njc3MvaWNvbmZvbnQtdnVlJztcblxuLmljb24tY29sbGFwc2Uge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IDEwNTsgLy8gYWJvdmUgYSwgdW5kZXIgYnV0dG9uXG5cdHdpZHRoOiA0NHB4O1xuXHRoZWlnaHQ6IDQ0cHg7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spIGVhc2UtaW4tb3V0O1xuXHQtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG5cdC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuXHR0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcblx0Ym9yZGVyOiBub25lO1xuXHRib3JkZXItcmFkaXVzOiAwO1xuXHRvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRib3gtc2hhZG93OiBub25lO1xuXHRmb250LXNpemU6IDE4cHg7XG5cblx0QGluY2x1ZGUgaWNvbmZvbnQoJ3RyaWFuZ2xlLXMnKTtcblxuXHQmOmhvdmVye1xuXHRcdGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0fVxuXHQmLS1yb3RhdGVkIHtcblx0XHQtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuXHRcdC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcblx0XHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcblx0XHQmOmhvdmVye1xuXHRcdFx0Y29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuXHRcdH1cblx0fVxufVxuXG48L3N0eWxlPlxuIiwiPCEtLVxuIC0gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTggSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuIC1cbiAtIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuIC0gQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuIC0gQGF1dGhvciBKb25hcyBTdWx6ZXIgPGpvbmFzQHZpb2xvbmNlbGxvLmNoPlxuIC0gQGF1dGhvciBKb25hdGhhbiBUcmVmZmxlciA8bWFpbEBqb25hdGhhbi10cmVmZmxlci5kZT5cbiAtXG4gLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAtXG4gLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAtXG4gLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAtIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuIC1cbiAtIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuIC0gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAtXG4gLS0+XG5cbjxkb2NzPlxuXG4jIFVzYWdlXG5cbiMjIyBTaW1wbGUgZWxlbWVudFxuXG4qIFdpdGggYW4gaWNvbjpcblxuYGBgXG48QXBwTmF2aWdhdGlvbkl0ZW0gdGl0bGU9XCJNeSB0aXRsZVwiIGljb249XCJpY29uLWNhdGVnb3J5LWVuYWJsZWRcIiAvPlxuXG5gYGBcbiogV2l0aCBhIHNwaW5uaW5nIGxvYWRlciBpbnN0ZWFkIG9mIHRoZSBpY29uOlxuXG5gYGBcbjxBcHBOYXZpZ2F0aW9uSXRlbSB0aXRsZT1cIkxvYWRpbmcgSXRlbVwiIDpsb2FkaW5nPVwidHJ1ZVwiIC8+XG5gYGBcblxuIyMjIEVsZW1lbnQgd2l0aCBhY3Rpb25zXG5XcmFwIHRoZSBjaGlsZHJlbiBpbiBhIHRlbXBsYXRlLiBJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gMiBhY3Rpb25zLCBhIHBvcG92ZXIgbWVudSBhbmQgYSBtZW51XG5idXR0b24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuXG5cbmBgYFxuPEFwcE5hdmlnYXRpb25JdGVtIHRpdGxlPVwiSXRlbSB3aXRoIGFjdGlvbnNcIiBpY29uPVwiaWNvbi1jYXRlZ29yeS1lbmFibGVkXCI+XG5cdDx0ZW1wbGF0ZSBzbG90PVwiYWN0aW9uc1wiPlxuXHRcdDxBY3Rpb25CdXR0b24gaWNvbj1cImljb24tZWRpdFwiIEBjbGljaz1cImFsZXJ0KCdFZGl0JylcIj5cblx0XHRcdEVkaXRcblx0XHQ8L0FjdGlvbkJ1dHRvbj5cblx0XHQ8QWN0aW9uQnV0dG9uIGljb249XCJpY29uLWRlbGV0ZVwiIEBjbGljaz1cImFsZXJ0KCdEZWxldGUnKVwiPlxuXHRcdFx0RGVsZXRlXG5cdFx0PC9BY3Rpb25CdXR0b24+XG5cdFx0PEFjdGlvbkxpbmsgaWNvbj1cImljb24tZXh0ZXJuYWxcIiB0aXRsZT1cIkxpbmtcIiBocmVmPVwiaHR0cHM6Ly9uZXh0Y2xvdWQuY29tXCIgLz5cblx0PC90ZW1wbGF0ZT5cbjwvQXBwTmF2aWdhdGlvbkl0ZW0+XG5gYGBcblxuIyMjIEVsZW1lbnQgd2l0aCBjb3VudGVyXG5KdXN0IG5lc3QgdGhlIGNvdW50ZXIgaW50byBgPEFwcE5hdmlnYXRpb25JdGVtPmAgYW5kIGFkZCBgc2xvdD1cImNvdW50ZXJcImAgdG8gaXQuXG5cbmBgYFxuPEFwcE5hdmlnYXRpb25JdGVtIHRpdGxlPVwiSXRlbSB3aXRoIGNvdW50ZXJcIiBpY29uPVwiaWNvbi1mb2xkZXJcIj5cblx0PEFwcE5hdmlnYXRpb25Db3VudGVyIHNsb3Q9XCJjb3VudGVyXCI+XG5cdFx0OTkrXG5cdDwvQXBwTmF2aWdhdGlvbkNvdW50ZXI+XG48L0FwcE5hdmlnYXRpb25JdGVtPlxuYGBgXG5cbiMjIyBFbGVtZW50IHdpdGggY2hpbGRyZW5cblxuV3JhcCB0aGUgY2hpbGRyZW4gaW4gYSB0ZW1wbGF0ZSB3aXRoIHRoZSBgc2xvdGAgcHJvcGVydHkgYW5kIHVzZSB0aGUgcHJvcCBgYWxsb3dDb2xsYXBzZWAgdG8gY2hvb3NlIHdldGhlciB0byBhbGxvdyBvclxucHJldmVudCB0aGUgdXNlciBmcm9tIGNvbGxhcHNpbmcgdGhlIGl0ZW1zLlxuXG5gYGBcbjxBcHBOYXZpZ2F0aW9uSXRlbSB0aXRsZT1cIkl0ZW0gd2l0aCBjaGlsZHJlblwiIDphbGxvd0NvbGxhcHNlPVwidHJ1ZVwiIDpvcGVuPVwidHJ1ZVwiPlxuXHQ8dGVtcGxhdGU+XG5cdFx0PEFwcE5hdmlnYXRpb25JdGVtIHRpdGxlPVwiQXBwTmF2aWdhdGlvbkl0ZW1DaGlsZDFcIiAvPlxuXHRcdDxBcHBOYXZpZ2F0aW9uSXRlbSBjbGFzcz1cImFjdGl2ZVwiIHRpdGxlPVwiQXBwTmF2aWdhdGlvbkl0ZW1DaGlsZDJcIiAvPlxuXHRcdDxBcHBOYXZpZ2F0aW9uSXRlbSB0aXRsZT1cIkFwcE5hdmlnYXRpb25JdGVtQ2hpbGQzXCIgLz5cblx0XHQ8QXBwTmF2aWdhdGlvbkl0ZW0gdGl0bGU9XCJBcHBOYXZpZ2F0aW9uSXRlbUNoaWxkNFwiIC8+XG5cdDwvdGVtcGxhdGU+XG48L0FwcE5hdmlnYXRpb25JdGVtPlxuYGBgXG4jIyMgRWRpdGFibGUgZWxlbWVudFxuQWRkIHRoZSBwcm9wIGA6ZWRpdGFibGU9dHJ1ZWAgYW5kIGFuIGVkaXQgcGxhY2Vob2xkZXIgaWYgeW91IG5lZWQgaXQuIEJ5IGRlZmF1bHRcbnRoZSBwbGFjZWhvbGRlciBpcyB0aGUgcHJldmlvdXMgdGl0bGUgb2YgdGhlIGVsZW1lbnQuXG5cbmBgYFxuPEFwcE5hdmlnYXRpb25JdGVtIHRpdGxlPVwiRWRpdGFibGUgSXRlbVwiIDplZGl0YWJsZT1cInRydWVcIlxuXHRlZGl0UGxhY2Vob2xkZXI9XCJ5b3VyX3BsYWNlaG9sZGVyX2hlcmVcIiBpY29uPVwiaWNvbi1mb2xkZXJcIiBAdXBkYXRlOnRpdGxlPVwiZnVuY3Rpb24odmFsdWUpe2FsZXJ0KHZhbHVlKX1cIiAvPlxuYGBgXG4jIyMgVW5kbyBlbGVtZW50XG5KdXN0IHNldCB0aGUgYHVuZG9gIGFuZCBgdGl0bGVgIHByb3BzLiBXaGVuIGNsaWNraW5nIHRoZSB1bmRvIGJ1dHRvbiwgYW4gYHVuZG9gIGV2ZW50IGlzIGVtaXR0ZWQuXG5cbmBgYFxuPEFwcE5hdmlnYXRpb25JdGVtIDp1bmRvPVwidHJ1ZVwiIHRpdGxlPVwiRGVsZXRlZCBpbXBvcnRhbnQgZW50cnlcIiBAdW5kbz1cImFsZXJ0KCd1bmRvIGRlbGV0ZScpXCIgIC8+XG5cbmBgYFxuIyMjIFBpbm5lZCBlbGVtZW50XG5KdXN0IHNldCB0aGUgYHBpbm5lZGAgcHJvcC5cbmBgYFxuPEFwcE5hdmlnYXRpb25JdGVtIHRpdGxlPVwiUGlubmVkIGl0ZW1cIiA6cGlubmVkPVwidHJ1ZVwiIC8+XG5gYGBcblxuPC9kb2NzPlxuXG48dGVtcGxhdGU+XG5cdDwhLS0gTmF2aWdhdGlvbiBpdGVtLCBjYW4gYmUgZWl0aGVyIGFuIDxsaT4gb3IgYSA8cm91dGVyLWxpbms+IGRlcGVuZGluZyBvbiB0aGUgcHJvcHMgLS0+XG5cdDxuYXYtZWxlbWVudCB2LWJpbmQ9XCJuYXZFbGVtZW50XCJcblx0XHQ6Y2xhc3M9XCJ7XG5cdFx0XHQnYXBwLW5hdmlnYXRpb24tZW50cnktLW5vLWljb24nOiAhaXNJY29uU2hvd24sXG5cdFx0XHQnYXBwLW5hdmlnYXRpb24tZW50cnktLW9wZW5lZCc6IG9wZW5lZCxcblx0XHRcdCdhcHAtbmF2aWdhdGlvbi1lbnRyeS0tcGlubmVkJzogcGlubmVkLFxuXHRcdFx0J2FwcC1uYXZpZ2F0aW9uLWVudHJ5LS1lZGl0aW5nJyA6IGVkaXRpbmdBY3RpdmUsXG5cdFx0XHQnYXBwLW5hdmlnYXRpb24tZW50cnktLWRlbGV0ZWQnOiB1bmRvLFxuXHRcdFx0J2FwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZSc6IGNvbGxhcHNpYmxlLFxuXHRcdFx0J2FjdGl2ZSc6IGlzQWN0aXZlXG5cdFx0fVwiXG5cdFx0Y2xhc3M9XCJhcHAtbmF2aWdhdGlvbi1lbnRyeVwiPlxuXHRcdDwhLS0gSWNvbiBhbmQgdGl0bGUgLS0+XG5cdFx0PGEgdi1pZj1cIiF1bmRvXCJcblx0XHRcdGNsYXNzPVwiYXBwLW5hdmlnYXRpb24tZW50cnktbGlua1wiXG5cdFx0XHRocmVmPVwiI1wiXG5cdFx0XHRAY2xpY2s9XCJvbkNsaWNrXCI+XG5cblx0XHRcdDwhLS0gaWNvbiBpZiBub3QgY29sbGFwc2libGUgLS0+XG5cdFx0XHQ8IS0tIG5ldmVyIHNob3cgdGhlIGljb24gb3ZlciB0aGUgY29sbGFwc2libGUgaWYgbW9iaWxlIC0tPlxuXHRcdFx0PGRpdiA6Y2xhc3M9XCJ7ICdpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLCBbaWNvbl06IGljb24gJiYgaXNJY29uU2hvd24gfVwiXG5cdFx0XHRcdGNsYXNzPVwiYXBwLW5hdmlnYXRpb24tZW50cnktaWNvblwiPlxuXHRcdFx0XHQ8c2xvdCB2LWlmPVwiIWxvYWRpbmdcIiB2LXNob3c9XCJpc0ljb25TaG93blwiIG5hbWU9XCJpY29uXCIgLz5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PHNwYW4gdi1pZj1cIiFlZGl0aW5nQWN0aXZlXCIgY2xhc3M9XCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9fdGl0bGVcIiA6dGl0bGU9XCJ0aXRsZVwiPlxuXHRcdFx0XHR7eyB0aXRsZSB9fVxuXHRcdFx0PC9zcGFuPlxuXHRcdFx0PGRpdiB2LWlmPVwiZWRpdGluZ0FjdGl2ZVwiIGNsYXNzPVwiZWRpdGluZ0NvbnRhaW5lclwiPlxuXHRcdFx0XHQ8SW5wdXRDb25maXJtQ2FuY2VsXG5cdFx0XHRcdFx0cmVmPVwiZWRpdGluZ0lucHV0XCJcblx0XHRcdFx0XHR2LW1vZGVsPVwiZWRpdGluZ1ZhbHVlXCJcblx0XHRcdFx0XHQ6cGxhY2Vob2xkZXI9XCJlZGl0UGxhY2Vob2xkZXIgIT09ICcnID8gZWRpdFBsYWNlaG9sZGVyIDogdGl0bGVcIlxuXHRcdFx0XHRcdEBjYW5jZWw9XCJjYW5jZWxFZGl0aW5nXCJcblx0XHRcdFx0XHRAY29uZmlybT1cImhhbmRsZUVkaXRpbmdEb25lXCIgLz5cblx0XHRcdDwvZGl2PlxuXHRcdDwvYT5cblxuXHRcdDxBcHBOYXZpZ2F0aW9uSWNvbkNvbGxhcHNpYmxlIHYtaWY9XCJjb2xsYXBzaWJsZVwiIDpvcGVuPVwib3BlbmVkXCIgQGNsaWNrLnByZXZlbnQuc3RvcD1cInRvZ2dsZUNvbGxhcHNlXCIgLz5cblx0XHQ8IS0tIHVuZG8gZW50cnkgLS0+XG5cdFx0PGRpdiB2LWlmPVwidW5kb1wiIGNsYXNzPVwiYXBwLW5hdmlnYXRpb24tZW50cnlfX2RlbGV0ZWRcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9fZGVsZXRlZC1kZXNjcmlwdGlvblwiPlxuXHRcdFx0XHR7eyB0aXRsZSB9fVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cblx0XHQ8IS0tIENvdW50ZXIgYW5kIEFjdGlvbnMgLS0+XG5cdFx0PGRpdiB2LWlmPVwiaGFzVXRpbHNcIiBjbGFzcz1cImFwcC1uYXZpZ2F0aW9uLWVudHJ5X191dGlsc1wiPlxuXHRcdFx0PGRpdiB2LWlmPVwiJHNsb3RzLmNvdW50ZXJcIlxuXHRcdFx0XHRjbGFzcz1cImFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jb3VudGVyLXdyYXBwZXJcIj5cblx0XHRcdFx0PHNsb3QgbmFtZT1cImNvdW50ZXJcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8QWN0aW9ucyBtZW51LWFsaWduPVwicmlnaHRcIlxuXHRcdFx0XHQ6cGxhY2VtZW50PVwibWVudVBsYWNlbWVudFwiXG5cdFx0XHRcdDpvcGVuPVwibWVudU9wZW5cIlxuXHRcdFx0XHQ6Zm9yY2UtbWVudT1cImZvcmNlTWVudVwiXG5cdFx0XHRcdDpkZWZhdWx0LWljb249XCJtZW51SWNvblwiXG5cdFx0XHRcdEB1cGRhdGU6b3Blbj1cIm9uTWVudVRvZ2dsZVwiPlxuXHRcdFx0XHQ8QWN0aW9uQnV0dG9uIHYtaWY9XCJlZGl0YWJsZSAmJiAhZWRpdGluZ0FjdGl2ZVwiIGljb249XCJpY29uLXJlbmFtZVwiIEBjbGljaz1cImhhbmRsZUVkaXRcIj5cblx0XHRcdFx0XHR7eyBlZGl0TGFiZWwgfX1cblx0XHRcdFx0PC9BY3Rpb25CdXR0b24+XG5cdFx0XHRcdDxBY3Rpb25CdXR0b24gdi1pZj1cInVuZG9cIiBpY29uPVwiYXBwLW5hdmlnYXRpb24tZW50cnlfX2RlbGV0ZWQtYnV0dG9uIGljb24taGlzdG9yeVwiIEBjbGljaz1cImhhbmRsZVVuZG9cIiAvPlxuXHRcdFx0XHQ8c2xvdCBuYW1lPVwiYWN0aW9uc1wiIC8+XG5cdFx0XHQ8L0FjdGlvbnM+XG5cdFx0PC9kaXY+XG5cblx0XHQ8IS0tIENoaWxkcmVuIGVsZW1lbnRzIC0tPlxuXHRcdDx1bCB2LWlmPVwiY2FuSGF2ZUNoaWxkcmVuICYmIGhhc0NoaWxkcmVuXCIgY2xhc3M9XCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9fY2hpbGRyZW5cIj5cblx0XHRcdDxzbG90IC8+XG5cdFx0PC91bD5cblxuXHRcdDwhLS0gQW55dGhpbmcgKHZpcnR1YWwpIHRoYXQgc2hvdWxkIGJlIG1vdW50ZWQgaW4gdGhlIGNvbXBvbmVudCwgbGlrZSBhIHJlbGF0ZWQgbW9kYWwgLS0+XG5cdFx0PHNsb3QgbmFtZT1cImV4dHJhXCIgLz5cblx0PC9uYXYtZWxlbWVudD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBkaXJlY3RpdmUgYXMgQ2xpY2tPdXRzaWRlIH0gZnJvbSAndi1jbGljay1vdXRzaWRlJ1xuXG5pbXBvcnQgQWN0aW9ucyBmcm9tICcuLi9BY3Rpb25zL0FjdGlvbnMnXG5pbXBvcnQgQWN0aW9uQnV0dG9uIGZyb20gJy4uL0FjdGlvbkJ1dHRvbi9BY3Rpb25CdXR0b24nXG5pbXBvcnQgQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZSBmcm9tICcuL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUnXG5pbXBvcnQgaXNNb2JpbGUgZnJvbSAnLi4vLi4vbWl4aW5zL2lzTW9iaWxlJ1xuaW1wb3J0IElucHV0Q29uZmlybUNhbmNlbCBmcm9tICcuL0lucHV0Q29uZmlybUNhbmNlbCdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnQXBwTmF2aWdhdGlvbkl0ZW0nLFxuXG5cdGNvbXBvbmVudHM6IHtcblx0XHRBY3Rpb25zLFxuXHRcdEFjdGlvbkJ1dHRvbixcblx0XHRBcHBOYXZpZ2F0aW9uSWNvbkNvbGxhcHNpYmxlLFxuXHRcdElucHV0Q29uZmlybUNhbmNlbCxcblx0fSxcblx0ZGlyZWN0aXZlczoge1xuXHRcdENsaWNrT3V0c2lkZSxcblx0fSxcblx0bWl4aW5zOiBbaXNNb2JpbGVdLFxuXHRwcm9wczoge1xuXHRcdC8qKlxuXHRcdCAqIFRoZSB0aXRsZSBvZiB0aGUgZWxlbWVudC5cblx0XHQgKi9cblx0XHR0aXRsZToge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0fSxcblx0XHQvKipcblx0XHQqIFJlZmVycyB0byB0aGUgaWNvbiBvbiB0aGUgbGVmdCwgdGhpcyBwcm9wIGFjY2VwdHMgYSBjbGFzc1xuXHRcdCogbGlrZSAnaWNvbi1jYXRlZ29yeS1lbmFibGVkJy5cblx0XHQqL1xuXHRcdGljb246IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6ICcnLFxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQqIERpc3BsYXlzIGEgbG9hZGluZyBhbmltYXRlZCBpY29uIG9uIHRoZSBsZWZ0IG9mIHRoZSBlbGVtZW50XG5cdFx0KiBpbnN0ZWFkIG9mIHRoZSBpY29uLlxuXHRcdCovXG5cdFx0bG9hZGluZzoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0KiBQYXNzaW5nIGluIGEgcm91dGUgd2lsbCBtYWtlIHRoZSByb290IGVsZW1lbnQgb2YgdGhpc1xuXHRcdCogY29tcG9uZW50IGEgYDxyb3V0ZXItbGluayAvPmAgdGhhdCBwb2ludHMgdG8gdGhhdCByb3V0ZS5cblx0XHQqIEJ5IGxlYXZpbmcgdGhpcyBibGFuaywgdGhlIHJvb3QgZWxlbWVudCB3aWxsIGJlIGEgYDxsaT5gLlxuXHRcdCovXG5cdFx0dG86IHtcblx0XHRcdHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCogUGFzcyBpbiBgdHJ1ZWAgaWYgeW91IHdhbnQgdGhlIG1hdGNoaW5nIGJlaGF2aW91ciB0b1xuXHRcdCogYmUgbm9uLWluY2x1c2l2ZTogaHR0cHM6Ly9yb3V0ZXIudnVlanMub3JnL2FwaS8jZXhhY3Rcblx0XHQqL1xuXHRcdGV4YWN0OiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblx0XHQvKipcblx0XHQqIEdpdmVzIHRoZSBwb3NzaWJpbGl0eSB0byBjb2xsYXBzZSB0aGUgY2hpbGRyZW4gZWxlbWVudHMgaW50byB0aGVcblx0XHQqIHBhcmVudCBlbGVtZW50ICh0cnVlKSBvciBleHBhbmRzIHRoZSBjaGlsZHJlbiBlbGVtZW50cyAoZmFsc2UpLlxuXHRcdCovXG5cdFx0YWxsb3dDb2xsYXBzZToge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0KiBNYWtlcyB0aGUgdGl0bGUgb2YgdGhlIGl0ZW0gZWRpdGFibGUgYnkgcHJvdmlkaW5nIGFuIGBBY3Rpb25CdXR0b25gXG5cdFx0KiBjb21wb25lbnQgdGhhdCB0b2dnbGVzIGEgZm9ybVxuXHRcdCovXG5cdFx0ZWRpdGFibGU6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCogT25seSBmb3IgJ2VkaXRhYmxlJyBpdGVtcywgc2V0cyBsYWJlbCBmb3IgdGhlIGVkaXQgYWN0aW9uIGJ1dHRvbi5cblx0XHQqL1xuXHRcdGVkaXRMYWJlbDoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJycsXG5cdFx0fSxcblx0XHQvKipcblx0XHQqIE9ubHkgZm9yIGl0ZW1zIGluICdlZGl0YWJsZScgbW9kZSwgc2V0cyB0aGUgcGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIGVkaXRpbmcgZm9ybS5cblx0XHQqL1xuXHRcdGVkaXRQbGFjZWhvbGRlcjoge1xuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0ZGVmYXVsdDogJycsXG5cdFx0fSxcblx0XHQvKipcblx0XHQqIFBpbnMgdGhlIGl0ZW0gdG8gdGhlIGJvdHRvbSBsZWZ0IGFyZWEsIGFib3ZlIHRoZSBzZXR0aW5ncy4gRG8gbm90XG5cdFx0KiBwbGFjZSAnbm9uLXBpbm5lZCcgYEFwcG5hdmlnYXRpb25JdGVtYCBjb21wb25lbnRzIGJlbG93IGBwaW5uZWRgXG5cdFx0KiBvbmVzLlxuXHRcdCovXG5cdFx0cGlubmVkOiB7XG5cdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0fSxcblx0XHQvKipcblx0XHQqIFB1dHMgdGhlIGl0ZW0gaW4gdGhlICd1bmRvJyBzdGF0ZS5cblx0XHQqL1xuXHRcdHVuZG86IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFRoZSBuYXZpZ2F0aW9uIGNvbGxhcHNpYmxlIHN0YXRlIChzeW5jZWQpXG5cdFx0ICovXG5cdFx0b3Blbjoge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogVGhlIGFjdGlvbnMgbWVudSBvcGVuIHN0YXRlIChzeW5jZWQpXG5cdFx0ICovXG5cdFx0bWVudU9wZW46IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEZvcmNlIHRoZSBhY3Rpb25zIHRvIGRpc3BsYXkgaW4gYSB0aHJlZSBkb3QgbWVudVxuXHRcdCAqL1xuXHRcdGZvcmNlTWVudToge1xuXHRcdFx0dHlwZTogQm9vbGVhbixcblx0XHRcdGRlZmF1bHQ6IGZhbHNlLFxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogVGhlIGFjdGlvbidzIG1lbnUgZGVmYXVsdCBpY29uXG5cdFx0ICovXG5cdFx0bWVudUljb246IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6IHVuZGVmaW5lZCxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFRoZSBhY3Rpb24ncyBtZW51IGRpcmVjdGlvblxuXHRcdCAqL1xuXHRcdG1lbnVQbGFjZW1lbnQ6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6ICdib3R0b20nLFxuXHRcdH0sXG5cdH0sXG5cblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZWRpdGluZ1ZhbHVlOiAnJyxcblx0XHRcdG9wZW5lZDogdGhpcy5vcGVuLFxuXHRcdFx0ZWRpdGluZ0FjdGl2ZTogZmFsc2UsXG5cdFx0fVxuXHR9LFxuXHRjb21wdXRlZDoge1xuXHRcdGNvbGxhcHNpYmxlKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZSAmJiAhIXRoaXMuJHNsb3RzLmRlZmF1bHRcblx0XHR9LFxuXG5cdFx0Ly8gaXMgdGhlIGljb24gc2hvd24/XG5cdFx0Ly8gd2UgZG9uJ3Qgc2hvdyBpdCBvbiBtb2JpbGUgaWYgdGhlIGVudHJ5IGlzIGNvbGxhcHNpYmxlXG5cdFx0Ly8gd2Ugc2hvdyB0aGUgY29sbGFwc2UgdG9nZ2xlIGRpcmVjdGx5IVxuXHRcdGlzSWNvblNob3duKCkge1xuXHRcdFx0cmV0dXJuICF0aGlzLmNvbGxhcHNpYmxlIHx8ICh0aGlzLmNvbGxhcHNpYmxlICYmICF0aGlzLmlzTW9iaWxlKVxuXHRcdH0sXG5cblx0XHQvLyBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IGEgY2hpbGRyZW4gb2YgYW5vdGhlclxuXHRcdC8vIGluc3RhbmNlIG9mIEFwcE5hdmlnYXRpb25JdGVtXG5cdFx0Y2FuSGF2ZUNoaWxkcmVuKCkge1xuXHRcdFx0aWYgKHRoaXMuJHBhcmVudC4kb3B0aW9ucy5fY29tcG9uZW50VGFnID09PSAnQXBwTmF2aWdhdGlvbkl0ZW0nKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH1cblx0XHR9LFxuXHRcdGhhc0NoaWxkcmVuKCkge1xuXHRcdFx0aWYgKHRoaXMuJHNsb3RzLmRlZmF1bHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aGFzVXRpbHMoKSB7XG5cdFx0XHRpZiAodGhpcy5lZGl0aW5nKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLiRzbG90cy5hY3Rpb25zIHx8IHRoaXMuJHNsb3RzLmNvdW50ZXIgfHwgdGhpcy5lZGl0YWJsZSB8fCB0aGlzLnVuZG8pIHtcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gVGhpcyBpcyB1c2VkIHRvIGRlY2lkZSB3aGljaCBvdXRlciBlbGVtZW50IHR5cGUgdG8gdXNlXG5cdFx0Ly8gbGkgb3Igcm91dGVyLWxpbmtcblx0XHRuYXZFbGVtZW50KCkge1xuXHRcdFx0aWYgKHRoaXMudG8pIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRpczogJ3JvdXRlci1saW5rJyxcblx0XHRcdFx0XHR0YWc6ICdsaScsXG5cdFx0XHRcdFx0dG86IHRoaXMudG8sXG5cdFx0XHRcdFx0ZXhhY3Q6IHRoaXMuZXhhY3QsXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlzOiAnbGknLFxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aXNBY3RpdmUoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy50byAmJiB0aGlzLiRyb3V0ZSA9PT0gdGhpcy50b1xuXHRcdH0sXG5cdH0sXG5cdHdhdGNoOiB7XG5cdFx0b3BlbihuZXdWYWwpIHtcblx0XHRcdHRoaXMub3BlbmVkID0gbmV3VmFsXG5cdFx0fSxcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdC8vIHN5bmMgb3BlbmVkIG1lbnUgc3RhdGUgd2l0aCBwcm9wXG5cdFx0b25NZW51VG9nZ2xlKHN0YXRlKSB7XG5cdFx0XHR0aGlzLiRlbWl0KCd1cGRhdGU6bWVudU9wZW4nLCBzdGF0ZSlcblx0XHR9LFxuXHRcdC8vIHRvZ2dsZSB0aGUgY29sbGFwc2libGUgc3RhdGVcblx0XHR0b2dnbGVDb2xsYXBzZSgpIHtcblx0XHRcdHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkXG5cdFx0XHR0aGlzLiRlbWl0KCd1cGRhdGU6b3BlbicsIHRoaXMub3BlbmVkKVxuXHRcdH0sXG5cblx0XHQvLyBmb3J3YXJkIGNsaWNrIGV2ZW50XG5cdFx0b25DbGljayhldmVudCkge1xuXHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snLCBldmVudClcblx0XHR9LFxuXG5cdFx0Ly8gRWRpdGlvbiBtZXRob2RzXG5cdFx0aGFuZGxlRWRpdCgpIHtcblx0XHRcdHRoaXMuZWRpdGluZ1ZhbHVlID0gdGhpcy50aXRsZVxuXHRcdFx0dGhpcy5lZGl0aW5nQWN0aXZlID0gdHJ1ZVxuXHRcdFx0dGhpcy5vbk1lbnVUb2dnbGUoZmFsc2UpXG5cdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XG5cdFx0XHRcdHRoaXMuJHJlZnMuZWRpdGluZ0lucHV0LmZvY3VzSW5wdXQoKVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdGNhbmNlbEVkaXRpbmcoKSB7XG5cdFx0XHR0aGlzLmVkaXRpbmdBY3RpdmUgPSBmYWxzZVxuXHRcdH0sXG5cdFx0aGFuZGxlRWRpdGluZ0RvbmUoKSB7XG5cdFx0XHR0aGlzLiRlbWl0KCd1cGRhdGU6dGl0bGUnLCB0aGlzLmVkaXRpbmdWYWx1ZSlcblx0XHRcdHRoaXMuZWRpdGluZ1ZhbHVlID0gJydcblx0XHRcdHRoaXMuZWRpdGluZ0FjdGl2ZSA9IGZhbHNlXG5cdFx0fSxcblxuXHRcdC8vIFVuZG8gbWV0aG9kc1xuXHRcdGhhbmRsZVVuZG8oKSB7XG5cdFx0XHR0aGlzLiRlbWl0KCd1bmRvJylcblx0XHR9LFxuXHR9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuQGltcG9ydCAnLi4vLi4vZm9udHMvc2Nzcy9pY29uZm9udC12dWUnO1xuXG4uYXBwLW5hdmlnYXRpb24tZW50cnkge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtc2hyaW5rOiAwO1xuXHRmbGV4LXdyYXA6IHdyYXA7XG5cdG9yZGVyOiAxO1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHR3aWR0aDogMTAwJTtcblx0bWluLWhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xuXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XG5cblx0Ly8gV2hlbiAuYWN0aXZlIGNsYXNzIGlzIGFwcGxpZWQsIGNoYW5nZSBjb2xvciBiYWNrZ3JvdW5kIG9mIGxpbmsgYW5kIHV0aWxzLiBUaGVcblx0Ly8gIWltcG9ydGFudCBwcmV2ZW50cyB0aGUgZm9jdXMgc3RhdGUgdG8gb3ZlcnJpZGUgdGhlIGFjdGl2ZSBzdGF0ZS5cblx0Ji5hY3RpdmUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpICFpbXBvcnRhbnQ7XG5cdH1cblx0Jjpmb2N1cy13aXRoaW4sXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaG92ZXIpO1xuXHR9XG5cdCYuYWN0aXZlLFxuXHQmOmZvY3VzLXdpdGhpbixcblx0Jjpob3ZlciB7XG5cdFx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlbiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xuXHRcdH1cblx0fVxuXG5cdC8qIGhpZGUgZGVsZXRpb24vY29sbGFwc2Ugb2Ygc3ViaXRlbXMgKi9cblx0Ji5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tZGVsZXRlZCxcblx0Ji5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGU6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tb3BlbmVkKSB7XG5cdFx0PiB1bCB7XG5cdFx0XHQvLyBOTyBBTklNQVRFIGJlY2F1c2UgaWYgbm90IHJlYWxseSBoaWRkZW4sIHdlIGNhbiBzdGlsbCB0YWIgdGhyb3VnaCBpdFxuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQmOm5vdCguYXBwLW5hdmlnYXRpb24tZW50cnktLWVkaXRpbmcpIHtcblx0XHQuYXBwLW5hdmlnYXRpb24tZW50cnktbGluaywgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWRpdiB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAkaWNvbi1tYXJnaW47XG5cdFx0fVxuXHR9XG5cblx0Ly8gTWFpbiBlbnRyeSBsaW5rXG5cdC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1saW5rLCAuYXBwLW5hdmlnYXRpb24tZW50cnktZGl2IHtcblx0XHR6LWluZGV4OiAxMDA7IC8qIGFib3ZlIHRoZSBidWxsZXQgdG8gYWxsb3cgY2xpY2sqL1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRmbGV4OiAxIDEgMDtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdG1pbi1oZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkaWNvbi1tYXJnaW4gY2VudGVyO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogJGljb24tc2l6ZSAkaWNvbi1zaXplO1xuXHRcdGxpbmUtaGVpZ2h0OiAkY2xpY2thYmxlLWFyZWE7XG5cblx0XHQuYXBwLW5hdmlnYXRpb24tZW50cnktaWNvbiB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGZsZXg6IDAgMCAkY2xpY2thYmxlLWFyZWE7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdHdpZHRoOiAkY2xpY2thYmxlLWFyZWE7XG5cdFx0XHRoZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogJGljb24tc2l6ZSAkaWNvbi1zaXplO1xuXHRcdH1cblxuXHRcdC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fdGl0bGUge1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHBhZGRpbmctbGVmdDogNnB4O1xuXHRcdH1cblxuXHRcdC5lZGl0aW5nQ29udGFpbmVyIHtcblx0XHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAjeyRjbGlja2FibGUtYXJlYX0pO1xuXHRcdFx0bWFyZ2luOiBhdXRvO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNlY29uZCBsZXZlbCBuZXN0aW5nIGZvciBsaXN0cyAqL1xuXHQuYXBwLW5hdmlnYXRpb24tZW50cnlfX2NoaWxkcmVuIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4OiAwIDEgYXV0bztcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5IHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1tYXJnaW47XG5cdFx0fVxuXHR9XG59XG5cbi8qIERlbGV0ZWQgZW50cmllcyAqL1xuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19kZWxldGVkIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGZsZXg6IDEgMSAwO1xuXHRwYWRkaW5nLWxlZnQ6ICRjbGlja2FibGUtYXJlYSAtICRpY29uLW1hcmdpbiAhaW1wb3J0YW50O1xuXHQuYXBwLW5hdmlnYXRpb24tZW50cnlfX2RlbGV0ZWQtZGVzY3JpcHRpb24ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGZsZXg6IDEgMSAwO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0bGluZS1oZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcblx0fVxufVxuXG4vKiBNYWtlcyB0aGUgaWNvbiBvZiB0aGUgY29sbGFwc2libGUgZWxlbWVudCBkaXNhcHBlYXJcbiogIFdoZW4gaG92ZXJpbmcgb24gdGhlIHJvb3QgZWxlbWVudCAqL1xuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZSB7XG5cdC8vc2hvd3MgdGhlIHRyaWFuZ2xlIGJ1dHRvblxuXHQuaWNvbi1jb2xsYXBzZSB7XG5cdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHR9XG5cdCYuYXBwLW5hdmlnYXRpb24tZW50cnktLW5vLWljb24sXG5cdCY6aG92ZXIsICY6Zm9jdXMge1xuXHRcdGEgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWljb24ge1xuXHRcdFx0Ly8gaGlkZXMgdGhlIGljb25cblx0XHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHR9XG5cdFx0Lmljb24tY29sbGFwc2Uge1xuXHRcdFx0Ly9zaG93cyB0aGUgdHJpYW5nbGUgYnV0dG9uXG5cdFx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdH1cblx0XHQvLyBwcmV2ZW50IHRoZSBpY29uIG9mIGNoaWxkcmVuIGVsZW1lbnRzIGZyb20gYmVpbmcgaGlkZGVuXG5cdFx0Ly8gYnkgdGhlIHByZXZpb3VzIHJ1bGVcblx0XHQuYXBwLW5hdmlnYXRpb24tZW50cnlfX2NoaWxkcmVuIGxpOm5vdCguYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlKSBhIDpmaXJzdC1jaGlsZCB7XG5cdFx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdH1cblx0fVxufVxuXG4vKiBjb3VudGVyIGFuZCBhY3Rpb25zICovXG4uYXBwLW5hdmlnYXRpb24tZW50cnlfX3V0aWxzIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0ZmxleDogMCAxIGF1dG87XG59XG5cbi8qIGNvdW50ZXIgKi9cbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY291bnRlci13cmFwcGVyIHtcblx0Ly8gQWRkIHNsaWdodGx5IG1vcmUgc3BhY2UgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjb3VudGVyXG5cdG1hcmdpbi1yaWdodDogMnB4O1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRmbGV4OiAwIDEgYXV0bztcbn1cblxuLy8gU1RBVEVTXG4vKiBlZGl0aW5nIHN0YXRlICovXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWVkaXRpbmcge1xuXHQuYXBwLW5hdmlnYXRpb24tZW50cnktZWRpdCB7XG5cdFx0ei1pbmRleDogMjUwO1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cblxuLyogZGVsZXRlZCBzdGF0ZSAqL1xuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1kZWxldGVkIHtcblx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWRlbGV0ZWQge1xuXHRcdHotaW5kZXg6IDI1MDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG5cdH1cbn1cblxuLyogcGlubmVkIHN0YXRlICovXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLXBpbm5lZCB7XG5cdG9yZGVyOiAyO1xuXHRtYXJnaW4tdG9wOiBhdXRvO1xuXHQvLyBvbmx5IHB1dCBhIG1hcmdpblRvcCBhdXRvIHRvIHRoZSBmaXJzdCBvbmUhXG5cdH4gLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1waW5uZWQge1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cbn1cblxuPC9zdHlsZT5cbiIsIjwhLS1cbiAtIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDIwIEpvbmF0aGFuIFRyZWZmbGVyIDxtYWlsQGpvbmF0aGFuLXRyZWZmbGVyLmRlPlxuIC1cbiAtIEBhdXRob3IgSm9uYXRoYW4gVHJlZmZsZXIgPG1haWxAam9uYXRoYW4tdHJlZmZsZXIuZGU+XG4gLVxuIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gLSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAtIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gLVxuIC0gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAtXG4gLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gLVxuIC0tPlxuXG48ZG9jcz5cbiMgVXNhZ2VcblxuYGBgXG48SW5wdXRDb25maXJtQ2FuY2VsIEBjb25maXJtPVwiYWxlcnQoJ2NvbmZpcm0nKVwiIEBjYW5jZWw9XCJhbGVydCgnY2FuY2VsJylcIiAvPlxuYGBgXG48L2RvY3M+XG48dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lclwiPlxuXHRcdDxmb3JtIEBzdWJtaXQucHJldmVudD1cImNvbmZpcm1cIiBAa2V5ZG93bi5lc2MuZXhhY3QucHJldmVudD1cImNhbmNlbFwiIEBjbGljay5zdG9wLnByZXZlbnQ+XG5cdFx0XHQ8aW5wdXQgcmVmPVwiaW5wdXRcIlxuXHRcdFx0XHR2LW1vZGVsPVwidmFsdWVNb2RlbFwiXG5cdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0Y2xhc3M9XCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0XCJcblx0XHRcdFx0OnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcIj5cblx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG5cdFx0XHRcdGNsYXNzPVwiaWNvbi1jb25maXJtXCJcblx0XHRcdFx0QGNsaWNrLnN0b3AucHJldmVudD1cImNvbmZpcm1cIiAvPlxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwicmVzZXRcIlxuXHRcdFx0XHRjbGFzcz1cImljb24tY2xvc2VcIlxuXHRcdFx0XHRAY2xpY2suc3RvcC5wcmV2ZW50PVwiY2FuY2VsXCIgLz5cblx0XHQ8L2Zvcm0+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG5cdHByb3BzOiB7XG5cdFx0cGxhY2Vob2xkZXI6IHtcblx0XHRcdGRlZmF1bHQ6ICcnLFxuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdH0sXG5cdFx0dmFsdWU6IHtcblx0XHRcdGRlZmF1bHQ6ICcnLFxuXHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdH0sXG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0dmFsdWVNb2RlbDoge1xuXHRcdFx0Z2V0KCkgeyByZXR1cm4gdGhpcy52YWx1ZSB9LFxuXHRcdFx0c2V0KG5ld1ZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsdWUpXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRjb25maXJtKCkge1xuXHRcdFx0dGhpcy4kZW1pdCgnY29uZmlybScpXG5cdFx0fSxcblx0XHRjYW5jZWwoKSB7XG5cdFx0XHR0aGlzLiRlbWl0KCdjYW5jZWwnKVxuXHRcdH0sXG5cdFx0Zm9jdXNJbnB1dCgpIHtcblx0XHRcdHRoaXMuJHJlZnMuaW5wdXQuZm9jdXMoKVxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG5AaW1wb3J0ICcuLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZSc7XG5cbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciB7XG5cdGZsZXg6IDEgMCAxMDAlO1xuXHR3aWR0aDogMTAwJTtcblx0Zm9ybSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQuYXBwLW5hdmlnYXRpb24tZW50cnlfX2lubGluZS1pbnB1dCB7XG5cdFx0XHRmbGV4OiAxIDEgMTAwJTtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR9XG5cblx0XHQvLyBzdWJtaXQgYW5kIGNhbmNlbCBidXR0b25zXG5cdFx0YnV0dG9uIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHR3aWR0aDogJGNsaWNrYWJsZS1hcmVhICFpbXBvcnRhbnQ7XG5cdFx0XHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cblx0XHRcdC8vIGljb24gaG92ZXIvZm9jdXMgZmVlZGJhY2tcblx0XHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRcdG9wYWNpdHk6ICRvcGFjaXR5X25vcm1hbDtcblx0XHRcdH1cblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Jjo6YmVmb3JlIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCYuaWNvbi1jb25maXJtIHtcblx0XHRcdFx0QGluY2x1ZGUgaWNvbmZvbnQoJ2NvbmZpcm0nKTtcblx0XHRcdFx0Ym9yZGVyLWxlZnQ6IG5vbmU7XG5cdFx0XHR9XG5cdFx0XHQmLmljb24tY29uZmlybTpob3ZlciB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDBweCB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKSAwcHggIWltcG9ydGFudDtcblx0XHRcdH1cblxuXHRcdFx0Ji5pY29uLWNsb3NlIHtcblx0XHRcdFx0QGluY2x1ZGUgaWNvbmZvbnQoJ2Nsb3NlJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5pY29uLWNsb3NlIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdH1cblx0fVxufVxuPC9zdHlsZT5cbiIsIjwhLS1cbiAgLSBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuICAtXG4gIC0gQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxuICAtXG4gIC0gQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gIC1cbiAgLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICAtIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gIC0gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAgLVxuICAtIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gIC0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gIC0gR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gIC1cbiAgLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgLSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuLS0+XG5cbjxkb2NzPlxuXG4jIyMgR2VuZXJhbCBkZXNjcmlwdGlvblxuXG5UaGlzIGNvbXBvbmVudCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgdGhlIHYtY29tcG9uZW50IHBsdWdpbiBieSBBa3J5dW0sXG5wbGVhc2UgcmVmZXIgdG8gdGhpcyBkb2N1bWVudGF0aW9uIGZvciBjdXN0b21pemF0aW9uOlxuaHR0cHM6Ly9naXRodWIuY29tL0Frcnl1bS92LXRvb2x0aXBcblxuVGhpcyBjb21wb25lbnRzIGhhcyB0d28gc2xvdHM6XG4qICd0cmlnZ2VyJyB3aGljaCBjYW4gYmUgYW55IGh0bWwgZWxlbWVudCBhbmQgaXQgd2lsbCB0cmlnZ2VyIHRoZSBwb3BvdmVyXG50aGlzIHNsb3QgaXMgb3B0aW9uYWwgc2luY2UgeW91IGNhbiB0b2dnbGUgdGhlIHBvcG92ZXIgYWxzbyBieSB1cGRhdGluZyB0aGVcbm9wZW4gcHJvcCBvbiB0aGlzIGNvbXBvbmVudDtcblxuKiBhIGRlZmF1bHQgc2xvdCB0aGF0IGlzIGZvciB0aGUgY29udGVudCBvZiB0aGUgcG9wb3Zlci5cblxuIyMjIEV4YW1wbGVzXG5cbldpdGggYSBgPGJ1dHRvbj5gIGFzIGEgdHJpZ2dlcjpcbmBgYHZ1ZVxuPHRlbXBsYXRlPlxuXHQ8UG9wb3Zlcj5cblx0XHQ8YnV0dG9uIHNsb3Q9XCJ0cmlnZ2VyXCI+IEkgYW0gdGhlIHRyaWdnZXIgPC9idXR0b24+XG5cdFx0PHRlbXBsYXRlPlxuXHRcdDxoMj50aGlzIGlzIHNvbWUgY29udGVudDwvaDI+XG5cdFx0PC90ZW1wbGF0ZT5cblx0PC9Qb3BvdmVyPlxuPC90ZW1wbGF0ZT5cbmBgYFxuPC9kb2NzPlxuXG48dGVtcGxhdGU+XG5cdDxWUG9wb3ZlclxuXHRcdHJlZj1cInBvcG92ZXJcIlxuXHRcdHYtYmluZD1cIiRhdHRyc1wiXG5cdFx0cG9wb3Zlci1iYXNlLWNsYXNzPVwicG9wb3ZlclwiXG5cdFx0cG9wb3Zlci13cmFwcGVyLWNsYXNzPVwicG9wb3Zlcl9fd3JhcHBlclwiXG5cdFx0cG9wb3Zlci1hcnJvdy1jbGFzcz1cInBvcG92ZXJfX2Fycm93XCJcblx0XHRwb3BvdmVyLWlubmVyLWNsYXNzPVwicG9wb3Zlcl9faW5uZXJcIlxuXHRcdHYtb249XCIkbGlzdGVuZXJzXCI+XG5cdFx0PCEtLSBUaGlzIHdpbGwgYmUgdGhlIHBvcG92ZXIgdGFyZ2V0IChmb3IgdGhlIGV2ZW50cyBhbmQgcG9zaXRpb24pIC0tPlxuXHRcdDxzbG90IG5hbWU9XCJ0cmlnZ2VyXCIgLz5cblx0XHQ8IS0tIFRoaXMgd2lsbCBiZSB0aGUgY29udGVudCBvZiB0aGUgcG9wb3ZlciAtLT5cblx0XHQ8dGVtcGxhdGUgc2xvdD1cInBvcG92ZXJcIj5cblx0XHRcdDxzbG90IC8+XG5cdFx0PC90ZW1wbGF0ZT5cblx0PC9WUG9wb3Zlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBWUG9wb3ZlciB9IGZyb20gJ3YtdG9vbHRpcCdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnUG9wb3ZlcicsXG5cdGNvbXBvbmVudHM6IHtcblx0XHRWUG9wb3Zlcixcblx0fSxcblxuXHRtb3VudGVkKCkge1xuXHRcdHRoaXMuJHdhdGNoKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHQvLyByZXF1aXJlZCBiZWNhdXNlIHYtdG9vbHRpcCBkb2Vzbid0IHByb3ZpZGUgZXZlbnRzXG5cdFx0XHRcdC8vIGFuZCBAc2hvdyBpcyB0b28gZWFybHlcblx0XHRcdFx0Ly8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Ba3J5dW0vdi10b29sdGlwL2lzc3Vlcy82NjFcblx0XHRcdFx0cmV0dXJuIHRoaXMuJHJlZnMucG9wb3Zlci5pc09wZW5cblx0XHRcdH0sXG5cdFx0XHQodmFsKSA9PiB7XG5cdFx0XHRcdGlmICh2YWwpIHtcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIHRvb2x0aXAgd2FzIHZpc3VhbGx5IGRpc3BsYXllZC5cblx0XHRcdFx0XHQgKlxuXHRcdFx0XHRcdCAqIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlICdzaG93JyBhbmQgJ2FwcGx5LXNob3cnIHdoaWNoXG5cdFx0XHRcdFx0ICogcnVuIGVhcmxpZXIgdGhhbiB0aGlzIHdoZXJlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZVxuXHRcdFx0XHRcdCAqIHRvb2x0aXAgaXMgYWxyZWFkeSB2aXNpYmxlIGFuZCBpbiB0aGUgRE9NLlxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2FmdGVyLXNob3cnKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIFRyaWdnZXJlZCBhZnRlciB0aGUgdG9vbHRpcCB3YXMgdmlzdWFsbHkgaGlkZGVuLlxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2FmdGVyLWhpZGUnKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KVxuXHR9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuJGFycm93LXdpZHRoOiAxMHB4O1xuXG4ucG9wb3ZlciB7XG5cdHotaW5kZXg6IDEwMDAwMDtcblx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuXHRmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDEwcHggdmFyKC0tY29sb3ItYm94LXNoYWRvdykpO1xuXG5cdCZfX2lubmVyIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XG5cdH1cblxuXHQmX19hcnJvdyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0d2lkdGg6IDA7XG5cdFx0aGVpZ2h0OiAwO1xuXHRcdG1hcmdpbjogJGFycm93LXdpZHRoO1xuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluLWJhY2tncm91bmQpO1xuXHR9XG5cblx0Jlt4LXBsYWNlbWVudF49J3RvcCddIHtcblx0XHRtYXJnaW4tYm90dG9tOiAkYXJyb3ctd2lkdGg7XG5cblx0XHQucG9wb3Zlcl9fYXJyb3cge1xuXHRcdFx0Ym90dG9tOiAtJGFycm93LXdpZHRoO1xuXHRcdFx0bGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggMCAkYXJyb3ctd2lkdGg7XG5cdFx0XHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0Jlt4LXBsYWNlbWVudF49J2JvdHRvbSddIHtcblx0XHRtYXJnaW4tdG9wOiAkYXJyb3ctd2lkdGg7XG5cblx0XHQucG9wb3Zlcl9fYXJyb3cge1xuXHRcdFx0dG9wOiAtJGFycm93LXdpZHRoO1xuXHRcdFx0bGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRib3JkZXItd2lkdGg6IDAgJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGg7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0Jlt4LXBsYWNlbWVudF49J3JpZ2h0J10ge1xuXHRcdG1hcmdpbi1sZWZ0OiAkYXJyb3ctd2lkdGg7XG5cblx0XHQucG9wb3Zlcl9fYXJyb3cge1xuXHRcdFx0dG9wOiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XG5cdFx0XHRsZWZ0OiAtJGFycm93LXdpZHRoO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0XHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoIDA7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdCZbeC1wbGFjZW1lbnRePSdsZWZ0J10ge1xuXHRcdG1hcmdpbi1yaWdodDogJGFycm93LXdpZHRoO1xuXG5cdFx0LnBvcG92ZXJfX2Fycm93IHtcblx0XHRcdHRvcDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xuXHRcdFx0cmlnaHQ6IC0kYXJyb3ctd2lkdGg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRcdGJvcmRlci13aWR0aDogJGFycm93LXdpZHRoIDAgJGFycm93LXdpZHRoICRhcnJvdy13aWR0aDtcblx0XHRcdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdCZbYXJpYS1oaWRkZW49J3RydWUnXSB7XG5cdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKSwgdmlzaWJpbGl0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spO1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cblxuXHQmW2FyaWEtaGlkZGVuPSdmYWxzZSddIHtcblx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKTtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG59XG5cbjwvc3R5bGU+XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuLyoqXFxuKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiwgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIFJvYmluIEFwcGVsbWFuIDxyb2JpbkBpY2V3aW5kLm5sPlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIEphbi1DaHJpc3RvcGggQm9yY2hhcmR0IDxoZXlAamFuY2JvcmNoYXJkdC5uZXQ+XFxuKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiwgRXJpayBQZWxsaWtrYSA8ZXJpa0BwZWxsaWtrYS5vcmc+XFxuKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNSwgVmluY2VudCBQZXRyeSA8cHZpbmNlODFAb3duY2xvdWQuY29tPlxcbipcXG4qIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKVxcbiogQ29weXJpZ2h0IDIwMTEtMjAxNSBUd2l0dGVyLCBJbmMuXFxuKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxcbiovXFxuLnZ1ZS10b29sdGlwW2RhdGEtdi04NGM0NjFmXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDAwMDA7XFxuICByaWdodDogYXV0bztcXG4gIGxlZnQ6IGF1dG87XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbjogMDtcXG4gIC8qIGRlZmF1bHQgdG8gdG9wICovXFxuICBtYXJnaW4tdG9wOiAtM3B4O1xcbiAgcGFkZGluZzogMTBweCAwO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgb3BhY2l0eTogMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjY7XFxuICBsaW5lLWJyZWFrOiBhdXRvO1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAxMHB4IHZhcigtLWNvbG9yLWJveC1zaGFkb3cpKTsgfVxcbiAgLnZ1ZS10b29sdGlwW2RhdGEtdi04NGM0NjFmXVt4LXBsYWNlbWVudF49J3RvcCddIC50b29sdGlwLWFycm93IHtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICBib3JkZXItd2lkdGg6IDEwcHggMTBweCAwIDEwcHg7XFxuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl1beC1wbGFjZW1lbnRePSdib3R0b20nXSAudG9vbHRpcC1hcnJvdyB7XFxuICAgIHRvcDogMDtcXG4gICAgbWFyZ2luLXRvcDogMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgYm9yZGVyLXdpZHRoOiAwIDEwcHggMTBweCAxMHB4O1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAudnVlLXRvb2x0aXBbZGF0YS12LTg0YzQ2MWZdW3gtcGxhY2VtZW50Xj0ncmlnaHQnXSAudG9vbHRpcC1hcnJvdyB7XFxuICAgIHJpZ2h0OiAxMDAlO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XFxuICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICBib3JkZXItd2lkdGg6IDEwcHggMTBweCAxMHB4IDA7XFxuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50OyB9XFxuICAudnVlLXRvb2x0aXBbZGF0YS12LTg0YzQ2MWZdW3gtcGxhY2VtZW50Xj0nbGVmdCddIC50b29sdGlwLWFycm93IHtcXG4gICAgbGVmdDogMTAwJTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgYm9yZGVyLXdpZHRoOiAxMHB4IDAgMTBweCAxMHB4O1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl1bYXJpYS1oaWRkZW49J3RydWUnXSB7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzLCB2aXNpYmlsaXR5IC4xNXM7XFxuICAgIG9wYWNpdHk6IDA7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl1bYXJpYS1oaWRkZW49J2ZhbHNlJ10ge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXM7XFxuICAgIG9wYWNpdHk6IDE7IH1cXG4gIC52dWUtdG9vbHRpcFtkYXRhLXYtODRjNDYxZl0gLnRvb2x0aXAtaW5uZXIge1xcbiAgICBtYXgtd2lkdGg6IDM1MHB4O1xcbiAgICBwYWRkaW5nOiA1cHggOHB4O1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTsgfVxcbiAgLnZ1ZS10b29sdGlwW2RhdGEtdi04NGM0NjFmXSAudG9vbHRpcC1hcnJvdyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTtcXG4gICAgd2lkdGg6IDA7XFxuICAgIGhlaWdodDogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7IH1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9pbmRleC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBQXBCRjs7Ozs7Ozs7OztDQStCQztBQWpCRDtFQUNDLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsV0FBVztFQUNYLFVBQVU7RUFDVixjQUFjO0VBQ2QsU0FBUztFQUNULG1CQUFBO0VBQ0EsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLFVBQVU7RUFDVixnQkFBZ0I7RUFFaEIsZ0JBQWdCO0VBQ2hCLHVEQUF1RCxFQUFBO0VBaEJ4RDtJQXFCRyxTQUFTO0lBQ1QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQiw4QkExQmU7SUEyQmYsK0JBQStCO0lBQy9CLGdDQUFnQztJQUNoQyw4QkFBOEIsRUFBQTtFQTNCakM7SUFrQ0csTUFBTTtJQUNOLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsOEJBdkNlO0lBd0NmLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsOEJBQThCLEVBQUE7RUF4Q2pDO0lBK0NHLFdBQVc7SUFDWCxlQUFlO0lBQ2YsY0FBYztJQUNkLDhCQUFzRDtJQUN0RCw2QkFBNkI7SUFDN0IsZ0NBQWdDO0lBQ2hDLDhCQUE4QixFQUFBO0VBckRqQztJQTRERyxVQUFVO0lBQ1YsZUFBZTtJQUNmLGNBQWM7SUFDZCw4QkFqRWU7SUFrRWYsNkJBQTZCO0lBQzdCLCtCQUErQjtJQUMvQixnQ0FBZ0MsRUFBQTtFQWxFbkM7SUF3RUUsa0JBQWtCO0lBQ2xCLHlDQUF5QztJQUN6QyxVQUFVLEVBQUE7RUExRVo7SUE2RUUsbUJBQW1CO0lBQ25CLHdCQUF3QjtJQUN4QixVQUFVLEVBQUE7RUEvRVo7SUFvRkUsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsNkJBQTZCO0lBQzdCLG1DQUFtQztJQUNuQyw4Q0FBOEMsRUFBQTtFQXpGaEQ7SUE4RkUsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixRQUFRO0lBQ1IsU0FBUztJQUNULFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIsMENBQTBDLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcbi8qKlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4qIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2LCBSb2JpbiBBcHBlbG1hbiA8cm9iaW5AaWNld2luZC5ubD5cXG4qIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2LCBKYW4tQ2hyaXN0b3BoIEJvcmNoYXJkdCA8aGV5QGphbmNib3JjaGFyZHQubmV0PlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYsIEVyaWsgUGVsbGlra2EgPGVyaWtAcGVsbGlra2Eub3JnPlxcbiogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTUsIFZpbmNlbnQgUGV0cnkgPHB2aW5jZTgxQG93bmNsb3VkLmNvbT5cXG4qXFxuKiBCb290c3RyYXAgdjMuMy41IChodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbSlcXG4qIENvcHlyaWdodCAyMDExLTIwMTUgVHdpdHRlciwgSW5jLlxcbiogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcXG4qL1xcblxcbiRhcnJvdy13aWR0aDogMTBweDtcXG5cXG4udnVlLXRvb2x0aXBbZGF0YS12LSN7JHNjb3BlX3ZlcnNpb259XSB7XFxuXFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdHotaW5kZXg6IDEwMDAwMDtcXG5cXHRyaWdodDogYXV0bztcXG5cXHRsZWZ0OiBhdXRvO1xcblxcdGRpc3BsYXk6IGJsb2NrO1xcblxcdG1hcmdpbjogMDtcXG5cXHQvKiBkZWZhdWx0IHRvIHRvcCAqL1xcblxcdG1hcmdpbi10b3A6IC0zcHg7XFxuXFx0cGFkZGluZzogMTBweCAwO1xcblxcdHRleHQtYWxpZ246IGxlZnQ7XFxuXFx0dGV4dC1hbGlnbjogc3RhcnQ7XFxuXFx0b3BhY2l0eTogMDtcXG5cXHRsaW5lLWhlaWdodDogMS42O1xcblxcblxcdGxpbmUtYnJlYWs6IGF1dG87XFxuXFx0ZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAxMHB4IHZhcigtLWNvbG9yLWJveC1zaGFkb3cpKTtcXG5cXG5cXHQvLyBUT1BcXG5cXHQmW3gtcGxhY2VtZW50Xj0ndG9wJ10ge1xcblxcdFxcdC50b29sdGlwLWFycm93IHtcXG5cXHRcXHRcXHRib3R0b206IDA7XFxuXFx0XFx0XFx0bWFyZ2luLXRvcDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tYm90dG9tOiAwO1xcblxcdFxcdFxcdGJvcmRlci13aWR0aDogJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAwICRhcnJvdy13aWR0aDtcXG5cXHRcXHRcXHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdFxcdGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdFxcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC8vIEJPVFRPTVxcblxcdCZbeC1wbGFjZW1lbnRePSdib3R0b20nXSB7XFxuXFx0XFx0LnRvb2x0aXAtYXJyb3cge1xcblxcdFxcdFxcdHRvcDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tdG9wOiAwO1xcblxcdFxcdFxcdG1hcmdpbi1ib3R0b206IDA7XFxuXFx0XFx0XFx0Ym9yZGVyLXdpZHRoOiAwICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoO1xcblxcdFxcdFxcdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdFxcdGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gUklHSFRcXG5cXHQmW3gtcGxhY2VtZW50Xj0ncmlnaHQnXSB7XFxuXFx0XFx0LnRvb2x0aXAtYXJyb3cge1xcblxcdFxcdFxcdHJpZ2h0OiAxMDAlO1xcblxcdFxcdFxcdG1hcmdpbi1yaWdodDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoIDA7XFxuXFx0XFx0XFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Ly8gTEVGVFxcblxcdCZbeC1wbGFjZW1lbnRePSdsZWZ0J10ge1xcblxcdFxcdC50b29sdGlwLWFycm93IHtcXG5cXHRcXHRcXHRsZWZ0OiAxMDAlO1xcblxcdFxcdFxcdG1hcmdpbi1yaWdodDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tbGVmdDogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAwICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHRcXHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC8vIEhJRERFTiAvIFNIT1dOXFxuXFx0JlthcmlhLWhpZGRlbj0ndHJ1ZSddIHtcXG5cXHRcXHR2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFx0XFx0dHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzLCB2aXNpYmlsaXR5IC4xNXM7XFxuXFx0XFx0b3BhY2l0eTogMDtcXG5cXHR9XFxuXFx0JlthcmlhLWhpZGRlbj0nZmFsc2UnXSB7XFxuXFx0XFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcXG5cXHRcXHR0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXM7XFxuXFx0XFx0b3BhY2l0eTogMTtcXG5cXHR9XFxuXFxuXFx0Ly8gQ09OVEVOVFxcblxcdC50b29sdGlwLWlubmVyIHtcXG5cXHRcXHRtYXgtd2lkdGg6IDM1MHB4O1xcblxcdFxcdHBhZGRpbmc6IDVweCA4cHg7XFxuXFx0XFx0dGV4dC1hbGlnbjogY2VudGVyO1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcblxcdFxcdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xcblxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcblxcblxcdC8vIEFSUk9XXFxuXFx0LnRvb2x0aXAtYXJyb3cge1xcblxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRcXHR6LWluZGV4OiAxO1xcblxcdFxcdHdpZHRoOiAwO1xcblxcdFxcdGhlaWdodDogMDtcXG5cXHRcXHRtYXJnaW46IDA7XFxuXFx0XFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcXG5cXHRcXHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxuXFx0fVxcbn1cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKiBAYXV0aG9yIE1hcmNvIEFtYnJvc2luaSA8bWFyY29hbWJyb3NpbmlAcG0ubWU+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxubGkuYWN0aXZlW2RhdGEtdi0yZTkyOWI0Zl0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1ob3Zlcik7XFxufVxcbi5hY3Rpb24tLWRpc2FibGVkW2RhdGEtdi0yZTkyOWI0Zl0ge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwLjU7XFxufVxcbi5hY3Rpb24tLWRpc2FibGVkW2RhdGEtdi0yZTkyOWI0Zl06aG92ZXIsIC5hY3Rpb24tLWRpc2FibGVkW2RhdGEtdi0yZTkyOWI0Zl06Zm9jdXMge1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgIG9wYWNpdHk6IDAuNTtcXG59XFxuLmFjdGlvbi0tZGlzYWJsZWQgKltkYXRhLXYtMmU5MjliNGZdIHtcXG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbn1cXG4uYWN0aW9uLWJ1dHRvbltkYXRhLXYtMmU5MjliNGZdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIHBhZGRpbmctcmlnaHQ6IDE0cHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3BhY2l0eTogMC43O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuICBib3JkZXI6IDA7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tZGVmYXVsdC1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IDQ0cHg7XFxufVxcbi5hY3Rpb24tYnV0dG9uW2RhdGEtdi0yZTkyOWI0Zl06aG92ZXIsIC5hY3Rpb24tYnV0dG9uW2RhdGEtdi0yZTkyOWI0Zl06Zm9jdXMge1xcbiAgICBvcGFjaXR5OiAxO1xcbn1cXG4uYWN0aW9uLWJ1dHRvbiA+IHNwYW5bZGF0YS12LTJlOTI5YjRmXSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG59XFxuLmFjdGlvbi1idXR0b25fX2ljb25bZGF0YS12LTJlOTI5YjRmXSB7XFxuICAgIHdpZHRoOiA0NHB4O1xcbiAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDE0cHggY2VudGVyO1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHg7XFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxufVxcbi5hY3Rpb24tYnV0dG9uIC5tYXRlcmlhbC1kZXNpZ24taWNvbltkYXRhLXYtMmU5MjliNGZdIHtcXG4gICAgd2lkdGg6IDQ0cHg7XFxuICAgIGhlaWdodDogNDRweDtcXG4gICAgb3BhY2l0eTogMTtcXG59XFxuLmFjdGlvbi1idXR0b24gLm1hdGVyaWFsLWRlc2lnbi1pY29uIC5tYXRlcmlhbC1kZXNpZ24taWNvbl9fc3ZnW2RhdGEtdi0yZTkyOWI0Zl0ge1xcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcbi5hY3Rpb24tYnV0dG9uIHBbZGF0YS12LTJlOTI5YjRmXSB7XFxuICAgIG1heC13aWR0aDogMjIwcHg7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcXG4gICAgcGFkZGluZzogMTAuOHB4IDA7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcbi5hY3Rpb24tYnV0dG9uX19sb25ndGV4dFtkYXRhLXYtMmU5MjliNGZdIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxufVxcbi5hY3Rpb24tYnV0dG9uX190aXRsZVtkYXRhLXYtMmU5MjliNGZdIHtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vQWN0aW9uQnV0dG9uLnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvYWN0aW9uLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBRXJCRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VGMkNFO0FFbkJEO0VBRUUsK0NBQStDO0FBQUE7QUFNakQ7RUFDQyxvQkFBb0I7RUFDcEIsWURRbUI7QUFBQTtBQ1ZwQjtJQUlFLGVBQWU7SUFDZixZREtrQjtBQUFBO0FDVnBCO0lBUUUscUJBQXFCO0FBQUE7QUFPdkI7RUFDQyxhQUFhO0VBQ2IsdUJBQXVCO0VBRXZCLFdBQVc7RUFDWCxZQUFZO0VBQ1osU0FBUztFQUNULFVBQVU7RUFDVixtQkR0QjhDO0VDd0I5QyxlQUFlO0VBQ2YsbUJBQW1CO0VBRW5CLFlEakJpQjtFQ2tCakIsNkJBQTZCO0VBQzdCLFNBQVM7RUFDVCxnQkFBZ0I7RUFDaEIsNkJBQTZCO0VBQzdCLGdCQUFnQjtFQUVoQixtQkFBbUI7RUFDbkIsbUNBQW1DO0VBQ25DLGlCRDVDbUI7QUFBQTtBQ3NCcEI7SUEwQkUsVUQ3QmE7QUFBQTtBQ0dmO0lBOEJFLGVBQWU7SUFDZixtQkFBbUI7QUFBQTtBQUdwQjtJQUNDLFdEekRrQjtJQzBEbEIsWUQxRGtCO0lDMkRsQixVRHhDYTtJQ3lDYixnQ0FBd0M7SUFDeEMscUJEekRhO0lDMERiLDRCQUE0QjtBQUFBO0FBeEM5QjtJQTRDRSxXRGxFa0I7SUNtRWxCLFlEbkVrQjtJQ29FbEIsVURqRGE7QUFBQTtBQ0dmO01BaURHLHNCQUFzQjtBQUFBO0FBakR6QjtJQXVERSxnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBR2xCLGlCQUE4QztJQUU5QyxlQUFlO0lBQ2YsZ0JBQWdCO0lBR2hCLGdCQUFnQjtJQUNoQix1QkFBdUI7QUFBQTtBQUd4QjtJQUNDLGVBQWU7SUFFZixxQkFBcUI7QUFBQTtBQUd0QjtJQUNDLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YscUJBQXFCO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbkBpbXBvcnQgJy4uLy4uL2Fzc2V0cy9hY3Rpb24nO1xcbkBpbmNsdWRlIGFjdGlvbi1hY3RpdmU7XFxuQGluY2x1ZGUgYWN0aW9uLS1kaXNhYmxlZDtcXG5AaW5jbHVkZSBhY3Rpb24taXRlbSgnYnV0dG9uJyk7XFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiLFwiLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICogQGF1dGhvciBNYXJjbyBBbWJyb3NpbmkgPG1hcmNvYW1icm9zaW5pQHBtLm1lPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbkBtaXhpbiBhY3Rpb24tYWN0aXZlIHtcXG5cXHRsaSB7XFxuXFx0XFx0Ji5hY3RpdmUge1xcblxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaG92ZXIpO1xcblxcdFxcdH1cXG5cXHR9XFxufVxcblxcbkBtaXhpbiBhY3Rpb24tLWRpc2FibGVkIHtcXG5cXHQuYWN0aW9uLS1kaXNhYmxlZCB7XFxuXFx0XFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZGlzYWJsZWQ7XFxuXFx0XFx0Jjpob3ZlciwgJjpmb2N1cyB7XFxuXFx0XFx0XFx0Y3Vyc29yOiBkZWZhdWx0O1xcblxcdFxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Rpc2FibGVkO1xcblxcdFxcdH1cXG5cXHRcXHQmICoge1xcblxcdFxcdFxcdG9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFx0fVxcbn1cXG5cXG5cXG5AbWl4aW4gYWN0aW9uLWl0ZW0oJG5hbWUpIHtcXG5cXHQuYWN0aW9uLSN7JG5hbWV9IHtcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcblxcblxcdFxcdHdpZHRoOiAxMDAlO1xcblxcdFxcdGhlaWdodDogYXV0bztcXG5cXHRcXHRtYXJnaW46IDA7XFxuXFx0XFx0cGFkZGluZzogMDtcXG5cXHRcXHRwYWRkaW5nLXJpZ2h0OiAkaWNvbi1tYXJnaW47XFxuXFxuXFx0XFx0Y3Vyc29yOiBwb2ludGVyO1xcblxcdFxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfbm9ybWFsO1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcblxcdFxcdGJvcmRlcjogMDtcXG5cXHRcXHRib3JkZXItcmFkaXVzOiAwOyAvLyBvdGhlcndpc2UgU2FmYXJpIHdpbGwgY3V0IHRoZSBib3JkZXItcmFkaXVzIGFyZWFcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG5cXHRcXHRib3gtc2hhZG93OiBub25lO1xcblxcblxcdFxcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuXFx0XFx0Zm9udC1zaXplOiB2YXIoLS1kZWZhdWx0LWZvbnQtc2l6ZSk7XFxuXFx0XFx0bGluZS1oZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcXG5cXG5cXHRcXHQmOmhvdmVyLFxcblxcdFxcdCY6Zm9jdXMge1xcblxcdFxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Z1bGw7XFxuXFx0XFx0fVxcblxcblxcdFxcdCYgPiBzcGFuIHtcXG5cXHRcXHRcXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0XFx0XFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Jl9faWNvbiB7XFxuXFx0XFx0XFx0d2lkdGg6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRcXHRoZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsO1xcblxcdFxcdFxcdGJhY2tncm91bmQtcG9zaXRpb246ICRpY29uLW1hcmdpbiBjZW50ZXI7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1zaXplOiAkaWNvbi1zaXplO1xcblxcdFxcdFxcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuXFx0XFx0fVxcblxcblxcdFxcdC5tYXRlcmlhbC1kZXNpZ24taWNvbiB7XFxuXFx0XFx0XFx0d2lkdGg6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRcXHRoZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRcXHRvcGFjaXR5OiAkb3BhY2l0eV9mdWxsO1xcblxcblxcdFxcdFxcdC5tYXRlcmlhbC1kZXNpZ24taWNvbl9fc3ZnIHtcXG5cXHRcXHRcXHRcXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gbG9uZyB0ZXh0IGFyZWFcXG5cXHRcXHRwIHtcXG5cXHRcXHRcXHRtYXgtd2lkdGg6IDIyMHB4O1xcblxcdFxcdFxcdGxpbmUtaGVpZ2h0OiAxLjZlbTtcXG5cXG5cXHRcXHRcXHQvLyAxNHB4IGFyZSBjdXJyZW50bHkgMWVtIGxpbmUtaGVpZ2h0LiBNaXhpbmcgdW5pdHMgYXMgJzQ0cHggLSAxLjZlbScgZG9lcyBub3Qgd29yay5cXG5cXHRcXHRcXHRwYWRkaW5nOiAjeygkY2xpY2thYmxlLWFyZWEgLSAxLjYqMTRweCkgLyAyfSAwO1xcblxcblxcdFxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRcXHR0ZXh0LWFsaWduOiBsZWZ0O1xcblxcblxcdFxcdFxcdC8vIGluIGNhc2UgdGhlcmUgYXJlIG5vIHNwYWNlcyBsaWtlIGxvbmcgZW1haWwgYWRkcmVzc2VzXFxuXFx0XFx0XFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRcXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Jl9fbG9uZ3RleHQge1xcblxcdFxcdFxcdGN1cnNvcjogcG9pbnRlcjtcXG5cXHRcXHRcXHQvLyBhbGxvdyB0aGUgdXNlIG9mIGBcXFxcbmBcXG5cXHRcXHRcXHR3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxuXFx0XFx0fVxcblxcblxcdFxcdCZfX3RpdGxlIHtcXG5cXHRcXHRcXHRmb250LXdlaWdodDogYm9sZDtcXG5cXHRcXHRcXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG5cXHRcXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdFxcdHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFx0XFx0XFx0bWF4LXdpZHRoOiAxMDAlO1xcblxcdFxcdFxcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG5cXHRcXHR9XFxuXFx0fVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5lb3RcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYud29mZlwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi50dGZcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYuc3ZnXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfM19fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzNfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgc3JjOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgLyogSUU5IENvbXBhdCBNb2RlcyAqL1xcbiAgc3JjOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpIGZvcm1hdChcXFwiZW1iZWRkZWQtb3BlbnR5cGVcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyArIFwiKSBmb3JtYXQoXFxcIndvZmZcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyArIFwiKSBmb3JtYXQoXFxcInRydWV0eXBlXFxcIiksIHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzNfX18gKyBcIikgZm9ybWF0KFxcXCJzdmdcXFwiKTtcXG4gIC8qIExlZ2FjeSBpT1MgKi9cXG59XFxuLmljb25bZGF0YS12LTRmNDU4NjRiXSB7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXdlaWdodDogNDAwO1xcbn1cXG4uaWNvbi5hcnJvdy1sZWZ0LWRvdWJsZVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiBXFxcIjtcXG59XFxuLmljb24uYXJyb3ctbGVmdFtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiCXFxcIjtcXG59XFxuLmljb24uYXJyb3ctcmlnaHQtZG91YmxlW2RhdGEtdi00ZjQ1ODY0Yl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqINcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1yaWdodFtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiEXFxcIjtcXG59XFxuLmljb24uYnJlYWRjcnVtYltkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiFXFxcIjtcXG59XFxuLmljb24uY2hlY2ttYXJrW2RhdGEtdi00ZjQ1ODY0Yl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIZcXFwiO1xcbn1cXG4uaWNvbi5jbG9zZVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiHXFxcIjtcXG59XFxuLmljb24uY29uZmlybVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiIXFxcIjtcXG59XFxuLmljb24uaW5mb1tkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiJXFxcIjtcXG59XFxuLmljb24ubWVudVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiKXFxcIjtcXG59XFxuLmljb24ubW9yZVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiLXFxcIjtcXG59XFxuLmljb24ucGF1c2VbZGF0YS12LTRmNDU4NjRiXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojFxcXCI7XFxufVxcbi5pY29uLnBsYXlbZGF0YS12LTRmNDU4NjRiXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojVxcXCI7XFxufVxcbi5pY29uLnRyaWFuZ2xlLXNbZGF0YS12LTRmNDU4NjRiXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojlxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWF3YXlbZGF0YS12LTRmNDU4NjRiXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oj1xcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWRuZFtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiQXFxcIjtcXG59XFxuLmljb24udXNlci1zdGF0dXMtaW52aXNpYmxlW2RhdGEtdi00ZjQ1ODY0Yl06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJFcXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1vbmxpbmVbZGF0YS12LTRmNDU4NjRiXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oklxcXCI7XFxufVxcbi5hY3Rpb24taXRlbVtkYXRhLXYtNGY0NTg2NGJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuLmFjdGlvbi1pdGVtLS1zaW5nbGVbZGF0YS12LTRmNDU4NjRiXTpob3ZlciwgLmFjdGlvbi1pdGVtLS1zaW5nbGVbZGF0YS12LTRmNDU4NjRiXTpmb2N1cywgLmFjdGlvbi1pdGVtLS1zaW5nbGVbZGF0YS12LTRmNDU4NjRiXTphY3RpdmUsIC5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZVtkYXRhLXYtNGY0NTg2NGJdOmhvdmVyLCAuYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGVbZGF0YS12LTRmNDU4NjRiXTpmb2N1cywgLmFjdGlvbi1pdGVtX19tZW51dG9nZ2xlW2RhdGEtdi00ZjQ1ODY0Yl06YWN0aXZlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjcsIDEyNywgMTI3LCAwLjI1KTtcXG59XFxuLmFjdGlvbi1pdGVtX19tZW51dG9nZ2xlW2RhdGEtdi00ZjQ1ODY0Yl06ZGlzYWJsZWQsIC5hY3Rpb24taXRlbS0tc2luZ2xlW2RhdGEtdi00ZjQ1ODY0Yl06ZGlzYWJsZWQge1xcbiAgICBvcGFjaXR5OiAuMyAhaW1wb3J0YW50O1xcbn1cXG4uYWN0aW9uLWl0ZW0uYWN0aW9uLWl0ZW0tLW9wZW4gLmFjdGlvbi1pdGVtX19tZW51dG9nZ2xlW2RhdGEtdi00ZjQ1ODY0Yl0ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMjUpO1xcbn1cXG4uYWN0aW9uLWl0ZW0tLXNpbmdsZVtkYXRhLXYtNGY0NTg2NGJdLCAuYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGVbZGF0YS12LTRmNDU4NjRiXSB7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIHdpZHRoOiBhdXRvO1xcbiAgICBtaW4td2lkdGg6IDQ0cHg7XFxuICAgIGhlaWdodDogNDRweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAxNHB4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMjJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcbi5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZVtkYXRhLXYtNGY0NTg2NGJdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIG9wYWNpdHk6IDAuNztcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbn1cXG4uYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGVbZGF0YS12LTRmNDU4NjRiXSBzcGFuIHtcXG4gICAgICB3aWR0aDogMTZweDtcXG4gICAgICBoZWlnaHQ6IDE2cHg7XFxuICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XFxufVxcbi5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgICAgY29udGVudDogJyc7XFxufVxcbi5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZS0tZGVmYXVsdC1pY29uW2RhdGEtdi00ZjQ1ODY0Yl06YmVmb3JlIHtcXG4gICAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgICBjb250ZW50OiBcXFwi7qiLXFxcIjtcXG59XFxuLmFjdGlvbi1pdGVtX19tZW51dG9nZ2xlLS1kZWZhdWx0LWljb25bZGF0YS12LTRmNDU4NjRiXTo6YmVmb3JlIHtcXG4gICAgICBmb250LXNpemU6IDE2cHg7XFxufVxcbi5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZS0td2l0aC10aXRsZVtkYXRhLXYtNGY0NTg2NGJdIHtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgcGFkZGluZy1sZWZ0OiA0NHB4O1xcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgb3BhY2l0eTogMTtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItZGFyayk7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYXJrKTtcXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxNHB4IGNlbnRlcjtcXG4gICAgICBmb250LXNpemU6IGluaGVyaXQ7XFxufVxcbi5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZS0td2l0aC10aXRsZVtkYXRhLXYtNGY0NTg2NGJdOmJlZm9yZSB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDE0cHg7XFxuICAgICAgICBsZWZ0OiAxNHB4O1xcbn1cXG4uYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGUtLXByaW1hcnlbZGF0YS12LTRmNDU4NjRiXSB7XFxuICAgICAgb3BhY2l0eTogMTtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50KTtcXG59XFxuLmFjdGlvbi1pdGVtLS1vcGVuIC5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZS0tcHJpbWFyeVtkYXRhLXYtNGY0NTg2NGJdLCAuYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGUtLXByaW1hcnlbZGF0YS12LTRmNDU4NjRiXTpob3ZlciwgLmFjdGlvbi1pdGVtX19tZW51dG9nZ2xlLS1wcmltYXJ5W2RhdGEtdi00ZjQ1ODY0Yl06Zm9jdXMsIC5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZS0tcHJpbWFyeVtkYXRhLXYtNGY0NTg2NGJdOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KSAhaW1wb3J0YW50O1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50LWxpZ2h0KSAhaW1wb3J0YW50O1xcbn1cXG4uYWN0aW9uLWl0ZW0tLXNpbmdsZVtkYXRhLXYtNGY0NTg2NGJdIHtcXG4gICAgb3BhY2l0eTogMC43O1xcbn1cXG4uYWN0aW9uLWl0ZW0tLXNpbmdsZVtkYXRhLXYtNGY0NTg2NGJdOmhvdmVyLCAuYWN0aW9uLWl0ZW0tLXNpbmdsZVtkYXRhLXYtNGY0NTg2NGJdOmZvY3VzLCAuYWN0aW9uLWl0ZW0tLXNpbmdsZVtkYXRhLXYtNGY0NTg2NGJdOmFjdGl2ZSB7XFxuICAgICAgb3BhY2l0eTogMTtcXG59XFxuLmFjdGlvbi1pdGVtLS1zaW5nbGUgPiBbaGlkZGVuXVtkYXRhLXYtNGY0NTg2NGJdIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbn1cXG4uaWUgLmFjdGlvbi1pdGVtX19tZW51W2RhdGEtdi00ZjQ1ODY0Yl0sXFxuLmllIC5hY3Rpb24taXRlbV9fbWVudSAuYWN0aW9uLWl0ZW1fX21lbnVfYXJyb3dbZGF0YS12LTRmNDU4NjRiXSxcXG4uZWRnZSAuYWN0aW9uLWl0ZW1fX21lbnVbZGF0YS12LTRmNDU4NjRiXSxcXG4uZWRnZSAuYWN0aW9uLWl0ZW1fX21lbnUgLmFjdGlvbi1pdGVtX19tZW51X2Fycm93W2RhdGEtdi00ZjQ1ODY0Yl0ge1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vQWN0aW9ucy52dWVcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Fzc2V0cy92YXJpYWJsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vZm9udHMvc2Nzcy9pY29uZm9udC12dWUuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFBZ0I7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VEcUJFO0FFc0VBO0VBQ0MsbUNBQW1DO0VBQ25DLDRDQUF1QztFQUFFLHFCQUFBO0VBQ3pDLG1QQUdtRDtFQUFFLGVBQUE7QUFBZ0I7QUFNdEU7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0FBQUE7QUFGbEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUE1R2U7QUFBTztBQXFHNUI7SUFNTSxtQ0FBbUM7SUFDbkMsWUEzR1E7QUFBTztBQW9HckI7SUFNTSxtQ0FBbUM7SUFDbkMsWUExR2dCO0FBQU87QUFtRzdCO0lBTU0sbUNBQW1DO0lBQ25DLFlBekdTO0FBQU87QUFrR3RCO0lBTU0sbUNBQW1DO0lBQ25DLFlBeEdRO0FBQU87QUFpR3JCO0lBTU0sbUNBQW1DO0lBQ25DLFlBdkdPO0FBQU87QUFnR3BCO0lBTU0sbUNBQW1DO0lBQ25DLFlBdEdHO0FBQU87QUErRmhCO0lBTU0sbUNBQW1DO0lBQ25DLFlBckdLO0FBQU87QUE4RmxCO0lBTU0sbUNBQW1DO0lBQ25DLFlBcEdFO0FBQU87QUE2RmY7SUFNTSxtQ0FBbUM7SUFDbkMsWUFuR0U7QUFBTztBQTRGZjtJQU1NLG1DQUFtQztJQUNuQyxZQWxHRTtBQUFPO0FBMkZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBakdHO0FBQU87QUEwRmhCO0lBTU0sbUNBQW1DO0lBQ25DLFlBaEdFO0FBQU87QUF5RmY7SUFNTSxtQ0FBbUM7SUFDbkMsWUEvRlE7QUFBTztBQXdGckI7SUFNTSxtQ0FBbUM7SUFDbkMsWUE5RmM7QUFBTztBQXVGM0I7SUFNTSxtQ0FBbUM7SUFDbkMsWUE3RmE7QUFBTztBQXNGMUI7SUFNTSxtQ0FBbUM7SUFDbkMsWUE1Rm1CO0FBQU87QUFxRmhDO0lBTU0sbUNBQW1DO0lBQ25DLFlBM0ZnQjtBQUFPO0FGNm5CL0I7RUFDQyxrQkFBa0I7RUFDbEIscUJBQXFCO0FBQUE7QUFJckI7SUFNQyxVQ2huQmM7SURrbkJkLDJDQzFuQnNDO0FBQUE7QUQ4bkJ2QztJQUVDLHNCQUFzQjtBQUFBO0FBcEJ4QjtJQXdCRSxVQzVuQmM7SUQ2bkJkLDJDQ3puQmdEO0FBQUE7QUQ2bkJqRDtJQUVDLHNCQUFzQjtJQUN0QixXQUFXO0lBQ1gsZUN4cEJtQjtJRHlwQm5CLFlDenBCbUI7SUQwcEJuQixTQUFTO0lBQ1QsYUNucEI4QztJRG9wQjlDLGVBQWU7SUFDZixZQUFZO0lBQ1osbUJBQWtDO0lBQ2xDLDZCQUE2QjtBQUFBO0FBSTlCO0lBRUMsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUN0cEJpQjtJRHVwQmpCLGlCQUFpQjtJQUNqQixpQkN0cUJjO0FBQUE7QUQrcEJkO01BV0MsV0MxcUJhO01EMnFCYixZQzNxQmE7TUQ0cUJiLGlCQzVxQmE7QUFBQTtBRCtwQmQ7TUFpQkMsV0FBVztBQUFBO0FBR1g7TUU5bkJDLG1DQWpGbUI7TUFrRm5CLGtCQUFrQjtNQUNsQixnQkFBZ0I7TUFDaEIsWUF6RU07QUFBTztBRm9zQmQ7TUFHQyxlQ3RyQlk7QUFBQTtBRDByQmQ7TUFDQyxrQkFBa0I7TUFDbEIsa0JDaHNCa0I7TURpc0JsQixtQkFBbUI7TUFDbkIsVUMvcUJhO01EZ3JCYiwwQ0FBMEM7TUFFMUMsOENBQThDO01BQzlDLGdDQUF3QztNQUN4QyxrQkFBa0I7QUFBQTtBQVRsQjtRQVlDLGtCQUFrQjtRQUNsQixTQ25zQjRDO1FEb3NCNUMsVUNwc0I0QztBQUFBO0FEd3NCOUM7TUFDQyxVQzlyQmE7TUQrckJiLGdDQUFnQztNQUNoQyxZQUFZO01BQ1osOENBQThDO0FBQUE7QUFDOUM7UUFJQywyQ0FBMkM7UUFDM0MsK0RBQStEO0FBQUE7QUFLbEU7SUFDQyxZQzlzQmlCO0FBQUE7QUQ2c0JqQjtNQUtDLFVDanRCYTtBQUFBO0FENHNCZDtNQVNDLGFBQWE7QUFBQTtBQUtoQjs7OztFQUlFLHFDQUFxQztBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5AaW1wb3J0ICcuLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZSc7XFxuXFxuLmFjdGlvbi1pdGVtIHtcXG5cXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xcblxcblxcdC8vIHB1dCBhIGdyZXkgcm91bmQgYmFja2dyb3VuZCB3aGVuIG1lbnUgaXMgb3BlbmVkXFxuXFx0Ly8gb3IgaG92ZXItZm9jdXNlZFxcblxcdCYtLXNpbmdsZTpob3ZlcixcXG5cXHQmLS1zaW5nbGU6Zm9jdXMsXFxuXFx0Ji0tc2luZ2xlOmFjdGl2ZSxcXG5cXHQmX19tZW51dG9nZ2xlOmhvdmVyLFxcblxcdCZfX21lbnV0b2dnbGU6Zm9jdXMsXFxuXFx0Jl9fbWVudXRvZ2dsZTphY3RpdmUge1xcblxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Z1bGw7XFxuXFx0XFx0Ly8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogJGljb24tZm9jdXMtYmc7XFxuXFx0fVxcblxcblxcdC8vIFRPRE86IGhhbmRsZSB0aGlzIGluIHRoZSBmdXR1cmUgYnV0dG9uIGNvbXBvbmVudFxcblxcdCZfX21lbnV0b2dnbGU6ZGlzYWJsZWQsXFxuXFx0Ji0tc2luZ2xlOmRpc2FibGVkIHtcXG5cXHRcXHRvcGFjaXR5OiAuMyAhaW1wb3J0YW50O1xcblxcdH1cXG5cXG5cXHQmLmFjdGlvbi1pdGVtLS1vcGVuIC5hY3Rpb24taXRlbV9fbWVudXRvZ2dsZSB7XFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aW9uLWJhY2tncm91bmQtaG92ZXI7XFxuXFx0fVxcblxcblxcdC8vIGljb25zXFxuXFx0Ji0tc2luZ2xlLFxcblxcdCZfX21lbnV0b2dnbGUge1xcblxcdFxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0XFx0d2lkdGg6IGF1dG87XFxuXFx0XFx0bWluLXdpZHRoOiAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0aGVpZ2h0OiAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0bWFyZ2luOiAwO1xcblxcdFxcdHBhZGRpbmc6ICRpY29uLW1hcmdpbjtcXG5cXHRcXHRjdXJzb3I6IHBvaW50ZXI7XFxuXFx0XFx0Ym9yZGVyOiBub25lO1xcblxcdFxcdGJvcmRlci1yYWRpdXM6ICRjbGlja2FibGUtYXJlYSAvIDI7XFxuXFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0fVxcblxcblxcdC8vIGljb24tbW9yZVxcblxcdCZfX21lbnV0b2dnbGUge1xcblxcdFxcdC8vIGFsaWduIG1lbnUgaWNvbiBpbiBjZW50ZXJcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0XFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfbm9ybWFsO1xcblxcdFxcdGZvbnQtd2VpZ2h0OiBib2xkO1xcblxcdFxcdGxpbmUtaGVpZ2h0OiAkaWNvbi1zaXplO1xcblxcblxcdFxcdC8vIGltYWdlIHNsb3RcXG5cXHRcXHQvZGVlcC8gc3BhbiB7XFxuXFx0XFx0XFx0d2lkdGg6ICRpY29uLXNpemU7XFxuXFx0XFx0XFx0aGVpZ2h0OiAkaWNvbi1zaXplO1xcblxcdFxcdFxcdGxpbmUtaGVpZ2h0OiAkaWNvbi1zaXplO1xcblxcdFxcdH1cXG5cXG5cXHRcXHQmOmJlZm9yZSB7XFxuXFx0XFx0XFx0Y29udGVudDogJyc7XFxuXFx0XFx0fVxcblxcblxcdFxcdCYtLWRlZmF1bHQtaWNvbiB7XFxuXFx0XFx0XFx0QGluY2x1ZGUgaWNvbmZvbnQoJ21vcmUnKTtcXG5cXHRcXHRcXHQmOjpiZWZvcmUge1xcblxcdFxcdFxcdFxcdGZvbnQtc2l6ZTogJGljb24tc2l6ZTtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdFxcdCYtLXdpdGgtdGl0bGUge1xcblxcdFxcdFxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRcXHRcXHRwYWRkaW5nLWxlZnQ6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRcXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFxcdFxcdG9wYWNpdHk6ICRvcGFjaXR5X2Z1bGw7XFxuXFx0XFx0XFx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWRhcmspO1xcblxcdFxcdFxcdC8vIHdpdGggYSB0aXRsZSwgd2UgbmVlZCB0byBkaXNwbGF5IHRoaXMgYXMgYSByZWFsIGJ1dHRvblxcblxcdFxcdFxcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFyayk7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1wb3NpdGlvbjogJGljb24tbWFyZ2luIGNlbnRlcjtcXG5cXHRcXHRcXHRmb250LXNpemU6IGluaGVyaXQ7XFxuXFx0XFx0XFx0Ly8gbm9uLWJhY2tncm91bmQgaWNvbiBjbGFzc1xcblxcdFxcdFxcdCY6YmVmb3JlIHtcXG5cXHRcXHRcXHRcXHRwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFx0XFx0XFx0XFx0dG9wOiAkaWNvbi1tYXJnaW47XFxuXFx0XFx0XFx0XFx0bGVmdDogJGljb24tbWFyZ2luO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ji0tcHJpbWFyeSB7XFxuXFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcXG5cXHRcXHRcXHRjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcXG5cXHRcXHRcXHRib3JkZXI6IG5vbmU7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50KTtcXG5cXHRcXHRcXHQuYWN0aW9uLWl0ZW0tLW9wZW4gJixcXG5cXHRcXHRcXHQmOmhvdmVyLFxcblxcdFxcdFxcdCY6Zm9jdXMsXFxuXFx0XFx0XFx0JjphY3RpdmUge1xcblxcdFxcdFxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1lbGVtZW50LWxpZ2h0KSAhaW1wb3J0YW50O1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdCYtLXNpbmdsZSB7XFxuXFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfbm9ybWFsO1xcblxcdFxcdCY6aG92ZXIsXFxuXFx0XFx0Jjpmb2N1cyxcXG5cXHRcXHQmOmFjdGl2ZSB7XFxuXFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcXG5cXHRcXHR9XFxuXFx0XFx0Ly8gaGlkZSBhbnl0aGluZyB0aGUgc2xvdCBpcyBkaXNwbGF5aW5nXFxuXFx0XFx0JiA+IFtoaWRkZW5dIHtcXG5cXHRcXHRcXHRkaXNwbGF5OiBub25lO1xcblxcdFxcdH1cXG5cXHR9XFxufVxcblxcbi5pZSxcXG4uZWRnZSB7XFxuXFx0LmFjdGlvbi1pdGVtX19tZW51LFxcblxcdC5hY3Rpb24taXRlbV9fbWVudSAuYWN0aW9uLWl0ZW1fX21lbnVfYXJyb3cge1xcblxcdFxcdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XFxuXFx0fVxcbn1cXG5cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCIsXCIkX19pY29uZm9udF9fZGF0YTogbWFwLW1lcmdlKGlmKGdsb2JhbF92YXJpYWJsZV9leGlzdHMoJ19faWNvbmZvbnRfX2RhdGEnKSwgJF9faWNvbmZvbnRfX2RhdGEsICgpKSwgKFxcblxcdFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI6IChcXG5cXHRcXHRcXFwiYXJyb3ctbGVmdC1kb3VibGVcXFwiOiBcXFwiXFxcXGVhMDFcXFwiLFxcblxcdFxcdFxcXCJhcnJvdy1sZWZ0XFxcIjogXFxcIlxcXFxlYTAyXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctcmlnaHQtZG91YmxlXFxcIjogXFxcIlxcXFxlYTAzXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctcmlnaHRcXFwiOiBcXFwiXFxcXGVhMDRcXFwiLFxcblxcdFxcdFxcXCJicmVhZGNydW1iXFxcIjogXFxcIlxcXFxlYTA1XFxcIixcXG5cXHRcXHRcXFwiY2hlY2ttYXJrXFxcIjogXFxcIlxcXFxlYTA2XFxcIixcXG5cXHRcXHRcXFwiY2xvc2VcXFwiOiBcXFwiXFxcXGVhMDdcXFwiLFxcblxcdFxcdFxcXCJjb25maXJtXFxcIjogXFxcIlxcXFxlYTA4XFxcIixcXG5cXHRcXHRcXFwiaW5mb1xcXCI6IFxcXCJcXFxcZWEwOVxcXCIsXFxuXFx0XFx0XFxcIm1lbnVcXFwiOiBcXFwiXFxcXGVhMGFcXFwiLFxcblxcdFxcdFxcXCJtb3JlXFxcIjogXFxcIlxcXFxlYTBiXFxcIixcXG5cXHRcXHRcXFwicGF1c2VcXFwiOiBcXFwiXFxcXGVhMGNcXFwiLFxcblxcdFxcdFxcXCJwbGF5XFxcIjogXFxcIlxcXFxlYTBkXFxcIixcXG5cXHRcXHRcXFwidHJpYW5nbGUtc1xcXCI6IFxcXCJcXFxcZWEwZVxcXCIsXFxuXFx0XFx0XFxcInVzZXItc3RhdHVzLWF3YXlcXFwiOiBcXFwiXFxcXGVhMGZcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1kbmRcXFwiOiBcXFwiXFxcXGVhMTBcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1pbnZpc2libGVcXFwiOiBcXFwiXFxcXGVhMTFcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1vbmxpbmVcXFwiOiBcXFwiXFxcXGVhMTJcXFwiXFxuXFx0KVxcbikpO1xcblxcblxcbiRjcmVhdGUtZm9udC1mYWNlOiB0cnVlICFkZWZhdWx0OyAvLyBzaG91bGQgdGhlIEBmb250LWZhY2UgdGFnIGdldCBjcmVhdGVkP1xcblxcbi8vIHNob3VsZCB0aGVyZSBiZSBhIGN1c3RvbSBjbGFzcyBmb3IgZWFjaCBpY29uPyB3aWxsIGJlIC5maWxlbmFtZVxcbiRjcmVhdGUtaWNvbi1jbGFzc2VzOiB0cnVlICFkZWZhdWx0OyBcXG5cXG4vLyB3aGF0IGlzIHRoZSBjb21tb24gY2xhc3MgbmFtZSB0aGF0IGljb25zIHNoYXJlPyBpbiB0aGlzIGNhc2UgaWNvbnMgbmVlZCB0byBoYXZlIC5pY29uLmZpbGVuYW1lIGluIHRoZWlyIGNsYXNzZXNcXG4vLyB0aGlzIHJlcXVpcmVzIHlvdSB0byBoYXZlIDIgY2xhc3NlcyBvbiBlYWNoIGljb24gaHRtbCBlbGVtZW50LCBidXQgcmVkdWNlZCByZWRlY2xhcmF0aW9uIG9mIHRoZSBmb250IGZhbWlseVxcbi8vIGZvciBlYWNoIGljb25cXG4kaWNvbi1jb21tb24tY2xhc3M6ICdpY29uJyAhZGVmYXVsdDtcXG5cXG4vLyBpZiB5b3Ugd2hpc2ggdG8gcHJlZml4IHlvdXIgZmlsZW5hbWVzLCBoZXJlIHlvdSBjYW4gZG8gc28uXFxuLy8gaWYgdGhpcyBzdHJpbmcgc3RheXMgZW1wdHksIHlvdXIgY2xhc3NlcyB3aWxsIHVzZSB0aGUgZmlsZW5hbWUsIGZvciBleGFtcGxlXFxuLy8gYW4gaWNvbiBjYWxsZWQgc3Rhci5zdmcgd2lsbCByZXN1bHQgaW4gYSBjbGFzcyBjYWxsZWQgLnN0YXJcXG4vLyBpZiB5b3UgdXNlIHRoZSBwcmVmaXggdG8gYmUgJ2ljb24tJyBpdCB3b3VsZCByZXN1bHQgaW4gLmljb24tc3RhclxcbiRpY29uLXByZWZpeDogJycgIWRlZmF1bHQ7IFxcblxcbi8vIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgZm9udCBncm91cFxcbkBmdW5jdGlvbiBpY29uZm9udC1ncm91cCgkZ3JvdXA6IG51bGwpIHtcXG4gIEBpZiAobnVsbCA9PSAkZ3JvdXApIHtcXG4gICAgJGdyb3VwOiBudGgobWFwLWtleXMoJF9faWNvbmZvbnRfX2RhdGEpLCAxKTtcXG4gIH1cXG4gIEBpZiAoZmFsc2UgPT0gbWFwLWhhcy1rZXkoJF9faWNvbmZvbnRfX2RhdGEsICRncm91cCkpIHtcXG4gICAgQHdhcm4gJ1VuZGVmaW5lZCBJY29uZm9udCBGYW1pbHkhJztcXG4gICAgQHJldHVybiAoKTtcXG4gIH1cXG4gIEByZXR1cm4gbWFwLWdldCgkX19pY29uZm9udF9fZGF0YSwgJGdyb3VwKTtcXG59XFxuXFxuLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBpY29uIG9mIGEgZ3JvdXBcXG5AZnVuY3Rpb24gaWNvbmZvbnQtaXRlbSgkbmFtZSkge1xcbiAgJHNsYXNoOiBzdHItaW5kZXgoJG5hbWUsICcvJyk7XFxuICAkZ3JvdXA6IG51bGw7XFxuICBAaWYgKCRzbGFzaCkge1xcbiAgICAkZ3JvdXA6IHN0ci1zbGljZSgkbmFtZSwgMCwgJHNsYXNoIC0gMSk7XFxuICAgICRuYW1lOiBzdHItc2xpY2UoJG5hbWUsICRzbGFzaCArIDEpO1xcbiAgfSBAZWxzZSB7XFxuICAgICRncm91cDogbnRoKG1hcC1rZXlzKCRfX2ljb25mb250X19kYXRhKSwgMSk7XFxuICB9XFxuICAkZ3JvdXA6IGljb25mb250LWdyb3VwKCRncm91cCk7XFxuICBAaWYgKGZhbHNlID09IG1hcC1oYXMta2V5KCRncm91cCwgJG5hbWUpKSB7XFxuICAgIEB3YXJuICdVbmRlZmluZWQgSWNvbmZvbnQgR2x5cGghJztcXG4gICAgQHJldHVybiAnJztcXG4gIH1cXG4gIEByZXR1cm4gbWFwLWdldCgkZ3JvdXAsICRuYW1lKTtcXG59XFxuXFxuLy8gY29tcGxldGUgbWl4aW5nIHRvIGluY2x1ZGUgdGhlIGljb25cXG4vLyB1c2FnZTpcXG4vLyAubXlfaWNvbnsgQGluY2x1ZGUgaWNvbmZvbnQoJ3N0YXInKSB9XFxuQG1peGluIGljb25mb250KCRpY29uKSB7XFxuICAkc2xhc2g6IHN0ci1pbmRleCgkaWNvbiwgJy8nKTtcXG4gICRncm91cDogbnVsbDtcXG4gIEBpZiAoJHNsYXNoKSB7XFxuICAgICRncm91cDogc3RyLXNsaWNlKCRpY29uLCAwLCAkc2xhc2ggLSAxKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAkZ3JvdXA6IG50aChtYXAta2V5cygkX19pY29uZm9udF9fZGF0YSksIDEpO1xcbiAgfVxcbiAgJjpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogJGdyb3VwO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgIGNvbnRlbnQ6IGljb25mb250LWl0ZW0oJGljb24pO1xcbiAgfVxcbn1cXG5cXG4vLyBjcmVhdGVzIHRoZSBmb250IGZhY2UgdGFnIGlmIHRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZSAoZGVmYXVsdClcXG5AaWYgJGNyZWF0ZS1mb250LWZhY2UgPT0gdHJ1ZSB7XFxuICBAZm9udC1mYWNlIHtcXG4gICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICBzcmM6IHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYuZW90Jyk7IC8qIElFOSBDb21wYXQgTW9kZXMgKi9cXG4gICBzcmM6IHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgLyogSUU2LUlFOCAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYud29mZicpIGZvcm1hdCgnd29mZicpLCAvKiBQcmV0dHkgTW9kZXJuIEJyb3dzZXJzICovXFxuICAgICAgdXJsKCcuLi9pY29uZm9udC12dWUtODRjNDYxZi50dGYnKSAgZm9ybWF0KCd0cnVldHlwZScpLCAvKiBTYWZhcmksIEFuZHJvaWQsIGlPUyAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYuc3ZnJykgZm9ybWF0KCdzdmcnKTsgLyogTGVnYWN5IGlPUyAqL1xcbiAgfVxcbn1cXG5cXG4vLyBjcmVhdGVzIGljb24gY2xhc3NlcyBmb3IgZWFjaCBpbmRpdmlkdWFsIGxvYWRlZCBzdmcgKGRlZmF1bHQpXFxuQGlmICRjcmVhdGUtaWNvbi1jbGFzc2VzID09IHRydWUge1xcbiAgLiN7JGljb24tY29tbW9uLWNsYXNzfSB7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG5cXG4gICAgQGVhY2ggJGljb24sICRjb250ZW50IGluIG1hcC1nZXQoJF9faWNvbmZvbnRfX2RhdGEsIFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCIpIHtcXG4gICAgICAmLiN7JGljb24tcHJlZml4fSN7JGljb259OmJlZm9yZSB7XFxuICAgICAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgICAgIGNvbnRlbnQ6IGljb25mb250LWl0ZW0oXFxcImljb25mb250LXZ1ZS04NGM0NjFmLyN7JGljb259XFxcIik7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gZnJvbSBcIi4uLy4uL2ZvbnRzL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdFwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi53b2ZmXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzJfX18gZnJvbSBcIi4uLy4uL2ZvbnRzL2ljb25mb250LXZ1ZS04NGM0NjFmLnR0ZlwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8zX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5zdmdcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzFfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzJfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8zX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICBzcmM6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIik7XFxuICAvKiBJRTkgQ29tcGF0IE1vZGVzICovXFxuICBzcmM6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIikgZm9ybWF0KFxcXCJlbWJlZGRlZC1vcGVudHlwZVxcXCIpLCB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fICsgXCIpIGZvcm1hdChcXFwid29mZlxcXCIpLCB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fICsgXCIpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfM19fXyArIFwiKSBmb3JtYXQoXFxcInN2Z1xcXCIpO1xcbiAgLyogTGVnYWN5IGlPUyAqL1xcbn1cXG4uaWNvbltkYXRhLXYtM2M0YWNmYjNdIHtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcbi5pY29uLmFycm93LWxlZnQtZG91YmxlW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIFcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1sZWZ0W2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIJcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1yaWdodC1kb3VibGVbZGF0YS12LTNjNGFjZmIzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6og1xcXCI7XFxufVxcbi5pY29uLmFycm93LXJpZ2h0W2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIRcXFwiO1xcbn1cXG4uaWNvbi5icmVhZGNydW1iW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIVcXFwiO1xcbn1cXG4uaWNvbi5jaGVja21hcmtbZGF0YS12LTNjNGFjZmIzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ohlxcXCI7XFxufVxcbi5pY29uLmNsb3NlW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIdcXFwiO1xcbn1cXG4uaWNvbi5jb25maXJtW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIhcXFwiO1xcbn1cXG4uaWNvbi5pbmZvW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIlcXFwiO1xcbn1cXG4uaWNvbi5tZW51W2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIpcXFwiO1xcbn1cXG4uaWNvbi5tb3JlW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqItcXFwiO1xcbn1cXG4uaWNvbi5wYXVzZVtkYXRhLXYtM2M0YWNmYjNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiMXFxcIjtcXG59XFxuLmljb24ucGxheVtkYXRhLXYtM2M0YWNmYjNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiNXFxcIjtcXG59XFxuLmljb24udHJpYW5nbGUtc1tkYXRhLXYtM2M0YWNmYjNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiOXFxcIjtcXG59XFxuLmljb24udXNlci1zdGF0dXMtYXdheVtkYXRhLXYtM2M0YWNmYjNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiPXFxcIjtcXG59XFxuLmljb24udXNlci1zdGF0dXMtZG5kW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJBcXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1pbnZpc2libGVbZGF0YS12LTNjNGFjZmIzXTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6okVxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLW9ubGluZVtkYXRhLXYtM2M0YWNmYjNdOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiSXFxcIjtcXG59XFxuLmljb24tY29sbGFwc2VbZGF0YS12LTNjNGFjZmIzXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDU7XFxuICB3aWR0aDogNDRweDtcXG4gIGhlaWdodDogNDRweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljaykgZWFzZS1pbi1vdXQ7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBmb250LXNpemU6IDE4cHg7XFxufVxcbi5pY29uLWNvbGxhcHNlW2RhdGEtdi0zYzRhY2ZiM106YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgY29udGVudDogXFxcIu6ojlxcXCI7XFxufVxcbi5pY29uLWNvbGxhcHNlW2RhdGEtdi0zYzRhY2ZiM106aG92ZXIge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxufVxcbi5pY29uLWNvbGxhcHNlLS1yb3RhdGVkW2RhdGEtdi0zYzRhY2ZiM10ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcXG59XFxuLmljb24tY29sbGFwc2UtLXJvdGF0ZWRbZGF0YS12LTNjNGFjZmIzXTpob3ZlciB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9BcHBOYXZpZ2F0aW9uSWNvbkNvbGxhcHNpYmxlLnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZS5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RURxQkU7QUVzRUE7RUFDQyxtQ0FBbUM7RUFDbkMsNENBQXVDO0VBQUUscUJBQUE7RUFDekMsbVBBR21EO0VBQUUsZUFBQTtBQUFnQjtBQU10RTtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0I7QUFBQTtBQUZsQjtJQU1NLG1DQUFtQztJQUNuQyxZQTVHZTtBQUFPO0FBcUc1QjtJQU1NLG1DQUFtQztJQUNuQyxZQTNHUTtBQUFPO0FBb0dyQjtJQU1NLG1DQUFtQztJQUNuQyxZQTFHZ0I7QUFBTztBQW1HN0I7SUFNTSxtQ0FBbUM7SUFDbkMsWUF6R1M7QUFBTztBQWtHdEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUF4R1E7QUFBTztBQWlHckI7SUFNTSxtQ0FBbUM7SUFDbkMsWUF2R087QUFBTztBQWdHcEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUF0R0c7QUFBTztBQStGaEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUFyR0s7QUFBTztBQThGbEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUFwR0U7QUFBTztBQTZGZjtJQU1NLG1DQUFtQztJQUNuQyxZQW5HRTtBQUFPO0FBNEZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBbEdFO0FBQU87QUEyRmY7SUFNTSxtQ0FBbUM7SUFDbkMsWUFqR0c7QUFBTztBQTBGaEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUFoR0U7QUFBTztBQXlGZjtJQU1NLG1DQUFtQztJQUNuQyxZQS9GUTtBQUFPO0FBd0ZyQjtJQU1NLG1DQUFtQztJQUNuQyxZQTlGYztBQUFPO0FBdUYzQjtJQU1NLG1DQUFtQztJQUNuQyxZQTdGYTtBQUFPO0FBc0YxQjtJQU1NLG1DQUFtQztJQUNuQyxZQTVGbUI7QUFBTztBQXFGaEM7SUFNTSxtQ0FBbUM7SUFDbkMsWUEzRmdCO0FBQU87QUZtQy9CO0VBQ0Msa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gsWUFBWTtFQUNaLFNBQVM7RUFDVCxVQUFVO0VBQ1Ysc0RBQXNEO0VBQ3RELGlDQUFpQztFQUNqQyw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLDZCQUE2QjtFQUM3QixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLHdCQUF3QjtFQUN4Qiw2QkFBNkI7RUFDN0IsZ0JBQWdCO0VBQ2hCLGVBQWU7QUFBQTtBQWpCaEI7SUU0QkksbUNBakZtQjtJQWtGbkIsa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixZQXRFWTtBQUFPO0FGdUN2QjtJQXNCRSwyQkFBMkI7QUFBQTtBQUU1QjtJQUNDLCtCQUErQjtJQUMvQiwyQkFBMkI7SUFDM0IsdUJBQXVCO0lBQ3ZCLDZCQUE2QjtBQUFBO0FBSjdCO01BTUMsMkJBQTJCO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbkBpbXBvcnQgJy4uLy4uL2ZvbnRzL3Njc3MvaWNvbmZvbnQtdnVlJztcXG5cXG4uaWNvbi1jb2xsYXBzZSB7XFxuXFx0cG9zaXRpb246IGFic29sdXRlO1xcblxcdHotaW5kZXg6IDEwNTsgLy8gYWJvdmUgYSwgdW5kZXIgYnV0dG9uXFxuXFx0d2lkdGg6IDQ0cHg7XFxuXFx0aGVpZ2h0OiA0NHB4O1xcblxcdG1hcmdpbjogMDtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKSBlYXNlLWluLW91dDtcXG5cXHQtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XFxuXFx0LW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcXG5cXHRjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcXG5cXHRib3JkZXI6IG5vbmU7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG5cXHRvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0Ym94LXNoYWRvdzogbm9uZTtcXG5cXHRmb250LXNpemU6IDE4cHg7XFxuXFxuXFx0QGluY2x1ZGUgaWNvbmZvbnQoJ3RyaWFuZ2xlLXMnKTtcXG5cXG5cXHQmOmhvdmVye1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG5cXHR9XFxuXFx0Ji0tcm90YXRlZCB7XFxuXFx0XFx0LXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG5cXHRcXHQtbXMtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0XFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuXFx0XFx0Jjpob3ZlcntcXG5cXHRcXHRcXHRjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuXFx0XFx0fVxcblxcdH1cXG59XFxuXFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiLFwiJF9faWNvbmZvbnRfX2RhdGE6IG1hcC1tZXJnZShpZihnbG9iYWxfdmFyaWFibGVfZXhpc3RzKCdfX2ljb25mb250X19kYXRhJyksICRfX2ljb25mb250X19kYXRhLCAoKSksIChcXG5cXHRcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiOiAoXFxuXFx0XFx0XFxcImFycm93LWxlZnQtZG91YmxlXFxcIjogXFxcIlxcXFxlYTAxXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctbGVmdFxcXCI6IFxcXCJcXFxcZWEwMlxcXCIsXFxuXFx0XFx0XFxcImFycm93LXJpZ2h0LWRvdWJsZVxcXCI6IFxcXCJcXFxcZWEwM1xcXCIsXFxuXFx0XFx0XFxcImFycm93LXJpZ2h0XFxcIjogXFxcIlxcXFxlYTA0XFxcIixcXG5cXHRcXHRcXFwiYnJlYWRjcnVtYlxcXCI6IFxcXCJcXFxcZWEwNVxcXCIsXFxuXFx0XFx0XFxcImNoZWNrbWFya1xcXCI6IFxcXCJcXFxcZWEwNlxcXCIsXFxuXFx0XFx0XFxcImNsb3NlXFxcIjogXFxcIlxcXFxlYTA3XFxcIixcXG5cXHRcXHRcXFwiY29uZmlybVxcXCI6IFxcXCJcXFxcZWEwOFxcXCIsXFxuXFx0XFx0XFxcImluZm9cXFwiOiBcXFwiXFxcXGVhMDlcXFwiLFxcblxcdFxcdFxcXCJtZW51XFxcIjogXFxcIlxcXFxlYTBhXFxcIixcXG5cXHRcXHRcXFwibW9yZVxcXCI6IFxcXCJcXFxcZWEwYlxcXCIsXFxuXFx0XFx0XFxcInBhdXNlXFxcIjogXFxcIlxcXFxlYTBjXFxcIixcXG5cXHRcXHRcXFwicGxheVxcXCI6IFxcXCJcXFxcZWEwZFxcXCIsXFxuXFx0XFx0XFxcInRyaWFuZ2xlLXNcXFwiOiBcXFwiXFxcXGVhMGVcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1hd2F5XFxcIjogXFxcIlxcXFxlYTBmXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtZG5kXFxcIjogXFxcIlxcXFxlYTEwXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtaW52aXNpYmxlXFxcIjogXFxcIlxcXFxlYTExXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtb25saW5lXFxcIjogXFxcIlxcXFxlYTEyXFxcIlxcblxcdClcXG4pKTtcXG5cXG5cXG4kY3JlYXRlLWZvbnQtZmFjZTogdHJ1ZSAhZGVmYXVsdDsgLy8gc2hvdWxkIHRoZSBAZm9udC1mYWNlIHRhZyBnZXQgY3JlYXRlZD9cXG5cXG4vLyBzaG91bGQgdGhlcmUgYmUgYSBjdXN0b20gY2xhc3MgZm9yIGVhY2ggaWNvbj8gd2lsbCBiZSAuZmlsZW5hbWVcXG4kY3JlYXRlLWljb24tY2xhc3NlczogdHJ1ZSAhZGVmYXVsdDsgXFxuXFxuLy8gd2hhdCBpcyB0aGUgY29tbW9uIGNsYXNzIG5hbWUgdGhhdCBpY29ucyBzaGFyZT8gaW4gdGhpcyBjYXNlIGljb25zIG5lZWQgdG8gaGF2ZSAuaWNvbi5maWxlbmFtZSBpbiB0aGVpciBjbGFzc2VzXFxuLy8gdGhpcyByZXF1aXJlcyB5b3UgdG8gaGF2ZSAyIGNsYXNzZXMgb24gZWFjaCBpY29uIGh0bWwgZWxlbWVudCwgYnV0IHJlZHVjZWQgcmVkZWNsYXJhdGlvbiBvZiB0aGUgZm9udCBmYW1pbHlcXG4vLyBmb3IgZWFjaCBpY29uXFxuJGljb24tY29tbW9uLWNsYXNzOiAnaWNvbicgIWRlZmF1bHQ7XFxuXFxuLy8gaWYgeW91IHdoaXNoIHRvIHByZWZpeCB5b3VyIGZpbGVuYW1lcywgaGVyZSB5b3UgY2FuIGRvIHNvLlxcbi8vIGlmIHRoaXMgc3RyaW5nIHN0YXlzIGVtcHR5LCB5b3VyIGNsYXNzZXMgd2lsbCB1c2UgdGhlIGZpbGVuYW1lLCBmb3IgZXhhbXBsZVxcbi8vIGFuIGljb24gY2FsbGVkIHN0YXIuc3ZnIHdpbGwgcmVzdWx0IGluIGEgY2xhc3MgY2FsbGVkIC5zdGFyXFxuLy8gaWYgeW91IHVzZSB0aGUgcHJlZml4IHRvIGJlICdpY29uLScgaXQgd291bGQgcmVzdWx0IGluIC5pY29uLXN0YXJcXG4kaWNvbi1wcmVmaXg6ICcnICFkZWZhdWx0OyBcXG5cXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IGZvbnQgZ3JvdXBcXG5AZnVuY3Rpb24gaWNvbmZvbnQtZ3JvdXAoJGdyb3VwOiBudWxsKSB7XFxuICBAaWYgKG51bGwgPT0gJGdyb3VwKSB7XFxuICAgICRncm91cDogbnRoKG1hcC1rZXlzKCRfX2ljb25mb250X19kYXRhKSwgMSk7XFxuICB9XFxuICBAaWYgKGZhbHNlID09IG1hcC1oYXMta2V5KCRfX2ljb25mb250X19kYXRhLCAkZ3JvdXApKSB7XFxuICAgIEB3YXJuICdVbmRlZmluZWQgSWNvbmZvbnQgRmFtaWx5ISc7XFxuICAgIEByZXR1cm4gKCk7XFxuICB9XFxuICBAcmV0dXJuIG1hcC1nZXQoJF9faWNvbmZvbnRfX2RhdGEsICRncm91cCk7XFxufVxcblxcbi8vIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgaWNvbiBvZiBhIGdyb3VwXFxuQGZ1bmN0aW9uIGljb25mb250LWl0ZW0oJG5hbWUpIHtcXG4gICRzbGFzaDogc3RyLWluZGV4KCRuYW1lLCAnLycpO1xcbiAgJGdyb3VwOiBudWxsO1xcbiAgQGlmICgkc2xhc2gpIHtcXG4gICAgJGdyb3VwOiBzdHItc2xpY2UoJG5hbWUsIDAsICRzbGFzaCAtIDEpO1xcbiAgICAkbmFtZTogc3RyLXNsaWNlKCRuYW1lLCAkc2xhc2ggKyAxKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAkZ3JvdXA6IG50aChtYXAta2V5cygkX19pY29uZm9udF9fZGF0YSksIDEpO1xcbiAgfVxcbiAgJGdyb3VwOiBpY29uZm9udC1ncm91cCgkZ3JvdXApO1xcbiAgQGlmIChmYWxzZSA9PSBtYXAtaGFzLWtleSgkZ3JvdXAsICRuYW1lKSkge1xcbiAgICBAd2FybiAnVW5kZWZpbmVkIEljb25mb250IEdseXBoISc7XFxuICAgIEByZXR1cm4gJyc7XFxuICB9XFxuICBAcmV0dXJuIG1hcC1nZXQoJGdyb3VwLCAkbmFtZSk7XFxufVxcblxcbi8vIGNvbXBsZXRlIG1peGluZyB0byBpbmNsdWRlIHRoZSBpY29uXFxuLy8gdXNhZ2U6XFxuLy8gLm15X2ljb257IEBpbmNsdWRlIGljb25mb250KCdzdGFyJykgfVxcbkBtaXhpbiBpY29uZm9udCgkaWNvbikge1xcbiAgJHNsYXNoOiBzdHItaW5kZXgoJGljb24sICcvJyk7XFxuICAkZ3JvdXA6IG51bGw7XFxuICBAaWYgKCRzbGFzaCkge1xcbiAgICAkZ3JvdXA6IHN0ci1zbGljZSgkaWNvbiwgMCwgJHNsYXNoIC0gMSk7XFxuICB9IEBlbHNlIHtcXG4gICAgJGdyb3VwOiBudGgobWFwLWtleXMoJF9faWNvbmZvbnRfX2RhdGEpLCAxKTtcXG4gIH1cXG4gICY6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6ICRncm91cDtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBjb250ZW50OiBpY29uZm9udC1pdGVtKCRpY29uKTtcXG4gIH1cXG59XFxuXFxuLy8gY3JlYXRlcyB0aGUgZm9udCBmYWNlIHRhZyBpZiB0aGUgdmFyaWFibGUgaXMgc2V0IHRvIHRydWUgKGRlZmF1bHQpXFxuQGlmICRjcmVhdGUtZm9udC1mYWNlID09IHRydWUge1xcbiAgQGZvbnQtZmFjZSB7XFxuICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgc3JjOiB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdCcpOyAvKiBJRTkgQ29tcGF0IE1vZGVzICovXFxuICAgc3JjOiB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIC8qIElFNi1JRTggKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgLyogUHJldHR5IE1vZGVybiBCcm93c2VycyAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYudHRmJykgIGZvcm1hdCgndHJ1ZXR5cGUnKSwgLyogU2FmYXJpLCBBbmRyb2lkLCBpT1MgKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLnN2ZycpIGZvcm1hdCgnc3ZnJyk7IC8qIExlZ2FjeSBpT1MgKi9cXG4gIH1cXG59XFxuXFxuLy8gY3JlYXRlcyBpY29uIGNsYXNzZXMgZm9yIGVhY2ggaW5kaXZpZHVhbCBsb2FkZWQgc3ZnIChkZWZhdWx0KVxcbkBpZiAkY3JlYXRlLWljb24tY2xhc3NlcyA9PSB0cnVlIHtcXG4gIC4jeyRpY29uLWNvbW1vbi1jbGFzc30ge1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICAgIEBlYWNoICRpY29uLCAkY29udGVudCBpbiBtYXAtZ2V0KCRfX2ljb25mb250X19kYXRhLCBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiKSB7XFxuICAgICAgJi4jeyRpY29uLXByZWZpeH0jeyRpY29ufTpiZWZvcmUge1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgICAgICBjb250ZW50OiBpY29uZm9udC1pdGVtKFxcXCJpY29uZm9udC12dWUtODRjNDYxZi8jeyRpY29ufVxcXCIpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5lb3RcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYud29mZlwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi50dGZcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyBmcm9tIFwiLi4vLi4vZm9udHMvaWNvbmZvbnQtdnVlLTg0YzQ2MWYuc3ZnXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfM19fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzNfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4vKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5AZm9udC1mYWNlIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgc3JjOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgLyogSUU5IENvbXBhdCBNb2RlcyAqL1xcbiAgc3JjOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpIGZvcm1hdChcXFwiZW1iZWRkZWQtb3BlbnR5cGVcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyArIFwiKSBmb3JtYXQoXFxcIndvZmZcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyArIFwiKSBmb3JtYXQoXFxcInRydWV0eXBlXFxcIiksIHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzNfX18gKyBcIikgZm9ybWF0KFxcXCJzdmdcXFwiKTtcXG4gIC8qIExlZ2FjeSBpT1MgKi9cXG59XFxuLmljb24ge1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuLmljb24uYXJyb3ctbGVmdC1kb3VibGU6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIFcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1sZWZ0OmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiCXFxcIjtcXG59XFxuLmljb24uYXJyb3ctcmlnaHQtZG91YmxlOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiDXFxcIjtcXG59XFxuLmljb24uYXJyb3ctcmlnaHQ6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIRcXFwiO1xcbn1cXG4uaWNvbi5icmVhZGNydW1iOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiFXFxcIjtcXG59XFxuLmljb24uY2hlY2ttYXJrOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiGXFxcIjtcXG59XFxuLmljb24uY2xvc2U6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIdcXFwiO1xcbn1cXG4uaWNvbi5jb25maXJtOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiIXFxcIjtcXG59XFxuLmljb24uaW5mbzpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oiVxcXCI7XFxufVxcbi5pY29uLm1lbnU6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIpcXFwiO1xcbn1cXG4uaWNvbi5tb3JlOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiLXFxcIjtcXG59XFxuLmljb24ucGF1c2U6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIxcXFwiO1xcbn1cXG4uaWNvbi5wbGF5OmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiNXFxcIjtcXG59XFxuLmljb24udHJpYW5nbGUtczpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojlxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWF3YXk6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqI9cXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1kbmQ6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJBcXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1pbnZpc2libGU6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJFcXFwiO1xcbn1cXG4uaWNvbi51c2VyLXN0YXR1cy1vbmxpbmU6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqJJcXFwiO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtc2hyaW5rOiAwO1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAgb3JkZXI6IDE7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtaW4taGVpZ2h0OiA0NHB4O1xcbiAgcGFkZGluZy1yaWdodDogNHB4O1xcbiAgLyogaGlkZSBkZWxldGlvbi9jb2xsYXBzZSBvZiBzdWJpdGVtcyAqL1xcbiAgLyogU2Vjb25kIGxldmVsIG5lc3RpbmcgZm9yIGxpc3RzICovXFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeS5hY3RpdmUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KSAhaW1wb3J0YW50O1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnk6Zm9jdXMtd2l0aGluLCAuYXBwLW5hdmlnYXRpb24tZW50cnk6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyKTtcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LmFjdGl2ZSAuYXBwLW5hdmlnYXRpb24tZW50cnlfX2NoaWxkcmVuLCAuYXBwLW5hdmlnYXRpb24tZW50cnk6Zm9jdXMtd2l0aGluIC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY2hpbGRyZW4sIC5hcHAtbmF2aWdhdGlvbi1lbnRyeTpob3ZlciAuYXBwLW5hdmlnYXRpb24tZW50cnlfX2NoaWxkcmVuIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1kZWxldGVkID4gdWwsIC5hcHAtbmF2aWdhdGlvbi1lbnRyeS5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGU6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tb3BlbmVkKSA+IHVsIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5Om5vdCguYXBwLW5hdmlnYXRpb24tZW50cnktLWVkaXRpbmcpIC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1saW5rLCAuYXBwLW5hdmlnYXRpb24tZW50cnk6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tZWRpdGluZykgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWRpdiB7XFxuICAgIHBhZGRpbmctcmlnaHQ6IDE0cHg7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeSAuYXBwLW5hdmlnYXRpb24tZW50cnktbGluaywgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5IC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1kaXYge1xcbiAgICB6LWluZGV4OiAxMDA7XFxuICAgIC8qIGFib3ZlIHRoZSBidWxsZXQgdG8gYWxsb3cgY2xpY2sqL1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBmbGV4OiAxIDEgMDtcXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgbWluLWhlaWdodDogNDRweDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDE0cHggY2VudGVyO1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcXG4gICAgbGluZS1oZWlnaHQ6IDQ0cHg7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeSAuYXBwLW5hdmlnYXRpb24tZW50cnktbGluayAuYXBwLW5hdmlnYXRpb24tZW50cnktaWNvbiwgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5IC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1kaXYgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWljb24ge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBmbGV4OiAwIDAgNDRweDtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICB3aWR0aDogNDRweDtcXG4gICAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxNnB4IDE2cHg7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeSAuYXBwLW5hdmlnYXRpb24tZW50cnktbGluayAuYXBwLW5hdmlnYXRpb24tZW50cnlfX3RpdGxlLCAuYXBwLW5hdmlnYXRpb24tZW50cnkgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWRpdiAuYXBwLW5hdmlnYXRpb24tZW50cnlfX3RpdGxlIHtcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgIHBhZGRpbmctbGVmdDogNnB4O1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnkgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWxpbmsgLmVkaXRpbmdDb250YWluZXIsIC5hcHAtbmF2aWdhdGlvbi1lbnRyeSAuYXBwLW5hdmlnYXRpb24tZW50cnktZGl2IC5lZGl0aW5nQ29udGFpbmVyIHtcXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gNDRweCk7XFxuICAgICAgbWFyZ2luOiBhdXRvO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnkgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlbiB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleDogMCAxIGF1dG87XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHdpZHRoOiAxMDAlO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnkgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlbiAuYXBwLW5hdmlnYXRpb24tZW50cnkge1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxufVxcblxcbi8qIERlbGV0ZWQgZW50cmllcyAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fZGVsZXRlZCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGZsZXg6IDEgMSAwO1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4ICFpbXBvcnRhbnQ7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fZGVsZXRlZCAuYXBwLW5hdmlnYXRpb24tZW50cnlfX2RlbGV0ZWQtZGVzY3JpcHRpb24ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIGZsZXg6IDEgMSAwO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gICAgbGluZS1oZWlnaHQ6IDQ0cHg7XFxufVxcblxcbi8qIE1ha2VzIHRoZSBpY29uIG9mIHRoZSBjb2xsYXBzaWJsZSBlbGVtZW50IGRpc2FwcGVhclxcbiogIFdoZW4gaG92ZXJpbmcgb24gdGhlIHJvb3QgZWxlbWVudCAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGUgLmljb24tY29sbGFwc2Uge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1uby1pY29uIGEgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWljb24sIC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGU6aG92ZXIgYSAuYXBwLW5hdmlnYXRpb24tZW50cnktaWNvbiwgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZTpmb2N1cyBhIC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1pY29uIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZS5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tbm8taWNvbiAuaWNvbi1jb2xsYXBzZSwgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZTpob3ZlciAuaWNvbi1jb2xsYXBzZSwgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZTpmb2N1cyAuaWNvbi1jb2xsYXBzZSB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1uby1pY29uIC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY2hpbGRyZW4gbGk6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGUpIGEgOmZpcnN0LWNoaWxkLCAuYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlOmhvdmVyIC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY2hpbGRyZW4gbGk6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGUpIGEgOmZpcnN0LWNoaWxkLCAuYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlOmZvY3VzIC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY2hpbGRyZW4gbGk6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tY29sbGFwc2libGUpIGEgOmZpcnN0LWNoaWxkIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxufVxcblxcbi8qIGNvdW50ZXIgYW5kIGFjdGlvbnMgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnlfX3V0aWxzIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZmxleDogMCAxIGF1dG87XFxufVxcblxcbi8qIGNvdW50ZXIgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnlfX2NvdW50ZXItd3JhcHBlciB7XFxuICBtYXJnaW4tcmlnaHQ6IDJweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZmxleDogMCAxIGF1dG87XFxufVxcblxcbi8qIGVkaXRpbmcgc3RhdGUgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWVkaXRpbmcgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWVkaXQge1xcbiAgei1pbmRleDogMjUwO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuXFxuLyogZGVsZXRlZCBzdGF0ZSAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tZGVsZXRlZCAuYXBwLW5hdmlnYXRpb24tZW50cnktZGVsZXRlZCB7XFxuICB6LWluZGV4OiAyNTA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxufVxcblxcbi8qIHBpbm5lZCBzdGF0ZSAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tcGlubmVkIHtcXG4gIG9yZGVyOiAyO1xcbiAgbWFyZ2luLXRvcDogYXV0bztcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1waW5uZWQgfiAuYXBwLW5hdmlnYXRpb24tZW50cnktLXBpbm5lZCB7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZS5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RURxQkU7QUVzRUE7RUFDQyxtQ0FBbUM7RUFDbkMsNENBQXVDO0VBQUUscUJBQUE7RUFDekMsbVBBR21EO0VBQUUsZUFBQTtBQUFnQjtBQU10RTtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0I7QUFBQTtBQUZsQjtJQU1NLG1DQUFtQztJQUNuQyxZQTVHZTtBQUFPO0FBcUc1QjtJQU1NLG1DQUFtQztJQUNuQyxZQTNHUTtBQUFPO0FBb0dyQjtJQU1NLG1DQUFtQztJQUNuQyxZQTFHZ0I7QUFBTztBQW1HN0I7SUFNTSxtQ0FBbUM7SUFDbkMsWUF6R1M7QUFBTztBQWtHdEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUF4R1E7QUFBTztBQWlHckI7SUFNTSxtQ0FBbUM7SUFDbkMsWUF2R087QUFBTztBQWdHcEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUF0R0c7QUFBTztBQStGaEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUFyR0s7QUFBTztBQThGbEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUFwR0U7QUFBTztBQTZGZjtJQU1NLG1DQUFtQztJQUNuQyxZQW5HRTtBQUFPO0FBNEZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBbEdFO0FBQU87QUEyRmY7SUFNTSxtQ0FBbUM7SUFDbkMsWUFqR0c7QUFBTztBQTBGaEI7SUFNTSxtQ0FBbUM7SUFDbkMsWUFoR0U7QUFBTztBQXlGZjtJQU1NLG1DQUFtQztJQUNuQyxZQS9GUTtBQUFPO0FBd0ZyQjtJQU1NLG1DQUFtQztJQUNuQyxZQTlGYztBQUFPO0FBdUYzQjtJQU1NLG1DQUFtQztJQUNuQyxZQTdGYTtBQUFPO0FBc0YxQjtJQU1NLG1DQUFtQztJQUNuQyxZQTVGbUI7QUFBTztBQXFGaEM7SUFNTSxtQ0FBbUM7SUFDbkMsWUEzRmdCO0FBQU87QUY0YS9CO0VBQ0Msa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixjQUFjO0VBQ2QsZUFBZTtFQUNmLFFBQVE7RUFDUixzQkFBc0I7RUFDdEIsV0FBVztFQUNYLGdCQzlhb0I7RUQrYXBCLGtCQUFrQjtFQW1CbEIsdUNBQUE7RUF1REEsbUNBQUE7QUFBb0M7QUFuRnJDO0lBY0UsdURBQXVEO0FBQUE7QUFkekQ7SUFrQkUsK0NBQStDO0FBQUE7QUFsQmpEO0lBd0JHLDhDQUE4QztBQUFBO0FBeEJqRDtJQWlDRyxhQUFhO0FBQUE7QUFqQ2hCO0lBdUNHLG1CQ3JjNkM7QUFBQTtBRDhaaEQ7SUE2Q0UsWUFBWTtJQUFFLG1DQUFBO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsc0JBQXNCO0lBQ3RCLGdCQ3hkbUI7SUR5ZG5CLFVBQVU7SUFDVixtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLDRCQUE0QjtJQUM1QixnQ0FBd0M7SUFDeEMsMEJDMWRjO0lEMmRkLGlCQy9kbUI7QUFBQTtBRHNhckI7TUE0REcsYUFBYTtNQUNiLG1CQUFtQjtNQUNuQixjQ3Bla0I7TURxZWxCLHVCQUF1QjtNQUN2QixXQ3Rla0I7TUR1ZWxCLFlDdmVrQjtNRHdlbEIsMEJDcGVhO0FBQUE7QURrYWhCO01Bc0VHLGdCQUFnQjtNQUNoQixlQUFlO01BQ2YsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixpQkFBaUI7QUFBQTtBQTFFcEI7TUE4RUcsd0JBQXNDO01BQ3RDLFlBQVk7QUFBQTtBQS9FZjtJQXFGRSxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsV0FBVztBQUFBO0FBekZiO01BNEZHLG9CQUFvQjtNQUNwQixlQUFlO01BQ2Ysa0JBQTRDO0FBQUE7O0FBSy9DLG9CQUFBO0FBQ0E7RUFDQyxvQkFBb0I7RUFDcEIsV0FBVztFQUNYLDZCQUF1RDtBQUFBO0FBSHhEO0lBS0Usa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkNwaEJtQjtBQUFBOztBRHdoQnJCO3NDQTNZc0M7QUE2WXRDO0VBR0Usa0JBQWtCO0FBQUE7QUFIcEI7RUFTRyxrQkFBa0I7QUFBQTtBQVRyQjtFQWFHLG1CQUFtQjtBQUFBO0FBYnRCO0VBa0JHLG1CQUFtQjtBQUFBOztBQUt0Qix3QkFBQTtBQUNBO0VBQ0MsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0FBQUE7O0FBR2YsWUFBQTtBQUNBO0VBRUMsaUJBQWlCO0VBQ2pCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztBQUFBOztBQUlmLGtCQUFBO0FBQ0E7RUFFRSxZQUFZO0VBQ1osVUFBVTtBQUFBOztBQUlaLGtCQUFBO0FBQ0E7RUFFRSxZQUFZO0VBQ1osd0JBQXdCO0FBQUE7O0FBSTFCLGlCQUFBO0FBQ0E7RUFDQyxRQUFRO0VBQ1IsZ0JBQWdCO0FBQUE7QUFGakI7SUFLRSxhQUFhO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiJHNjb3BlX3ZlcnNpb246XFxcIjg0YzQ2MWZcXFwiOyBAaW1wb3J0ICd2YXJpYWJsZXMnO1xcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbkBpbXBvcnQgJy4uLy4uL2ZvbnRzL3Njc3MvaWNvbmZvbnQtdnVlJztcXG5cXG4uYXBwLW5hdmlnYXRpb24tZW50cnkge1xcblxcdHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtc2hyaW5rOiAwO1xcblxcdGZsZXgtd3JhcDogd3JhcDtcXG5cXHRvcmRlcjogMTtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdG1pbi1oZWlnaHQ6ICRjbGlja2FibGUtYXJlYTtcXG5cXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuXFxuXFx0Ly8gV2hlbiAuYWN0aXZlIGNsYXNzIGlzIGFwcGxpZWQsIGNoYW5nZSBjb2xvciBiYWNrZ3JvdW5kIG9mIGxpbmsgYW5kIHV0aWxzLiBUaGVcXG5cXHQvLyAhaW1wb3J0YW50IHByZXZlbnRzIHRoZSBmb2N1cyBzdGF0ZSB0byBvdmVycmlkZSB0aGUgYWN0aXZlIHN0YXRlLlxcblxcdCYuYWN0aXZlIHtcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KSAhaW1wb3J0YW50O1xcblxcdH1cXG5cXHQmOmZvY3VzLXdpdGhpbixcXG5cXHQmOmhvdmVyIHtcXG5cXHRcXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyKTtcXG5cXHR9XFxuXFx0Ji5hY3RpdmUsXFxuXFx0Jjpmb2N1cy13aXRoaW4sXFxuXFx0Jjpob3ZlciB7XFxuXFx0XFx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlbiB7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdC8qIGhpZGUgZGVsZXRpb24vY29sbGFwc2Ugb2Ygc3ViaXRlbXMgKi9cXG5cXHQmLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1kZWxldGVkLFxcblxcdCYuYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlOm5vdCguYXBwLW5hdmlnYXRpb24tZW50cnktLW9wZW5lZCkge1xcblxcdFxcdD4gdWwge1xcblxcdFxcdFxcdC8vIE5PIEFOSU1BVEUgYmVjYXVzZSBpZiBub3QgcmVhbGx5IGhpZGRlbiwgd2UgY2FuIHN0aWxsIHRhYiB0aHJvdWdoIGl0XFxuXFx0XFx0XFx0ZGlzcGxheTogbm9uZTtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdCY6bm90KC5hcHAtbmF2aWdhdGlvbi1lbnRyeS0tZWRpdGluZykge1xcblxcdFxcdC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1saW5rLCAuYXBwLW5hdmlnYXRpb24tZW50cnktZGl2IHtcXG5cXHRcXHRcXHRwYWRkaW5nLXJpZ2h0OiAkaWNvbi1tYXJnaW47XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQvLyBNYWluIGVudHJ5IGxpbmtcXG5cXHQuYXBwLW5hdmlnYXRpb24tZW50cnktbGluaywgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWRpdiB7XFxuXFx0XFx0ei1pbmRleDogMTAwOyAvKiBhYm92ZSB0aGUgYnVsbGV0IHRvIGFsbG93IGNsaWNrKi9cXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdG92ZXJmbG93OiBoaWRkZW47XFxuXFx0XFx0ZmxleDogMSAxIDA7XFxuXFx0XFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXHRcXHRtaW4taGVpZ2h0OiAkY2xpY2thYmxlLWFyZWE7XFxuXFx0XFx0cGFkZGluZzogMDtcXG5cXHRcXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFxcdGNvbG9yOiB2YXIoLS1jb2xvci1tYWluLXRleHQpO1xcblxcdFxcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuXFx0XFx0YmFja2dyb3VuZC1wb3NpdGlvbjogJGljb24tbWFyZ2luIGNlbnRlcjtcXG5cXHRcXHRiYWNrZ3JvdW5kLXNpemU6ICRpY29uLXNpemUgJGljb24tc2l6ZTtcXG5cXHRcXHRsaW5lLWhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xcblxcblxcdFxcdC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1pY29uIHtcXG5cXHRcXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdFxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0XFx0XFx0ZmxleDogMCAwICRjbGlja2FibGUtYXJlYTtcXG5cXHRcXHRcXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXHRcXHRcXHR3aWR0aDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdFxcdGhlaWdodDogJGNsaWNrYWJsZS1hcmVhO1xcblxcdFxcdFxcdGJhY2tncm91bmQtc2l6ZTogJGljb24tc2l6ZSAkaWNvbi1zaXplO1xcblxcdFxcdH1cXG5cXG5cXHRcXHQuYXBwLW5hdmlnYXRpb24tZW50cnlfX3RpdGxlIHtcXG5cXHRcXHRcXHRvdmVyZmxvdzogaGlkZGVuO1xcblxcdFxcdFxcdG1heC13aWR0aDogMTAwJTtcXG5cXHRcXHRcXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdFxcdFxcdHBhZGRpbmctbGVmdDogNnB4O1xcblxcdFxcdH1cXG5cXG5cXHRcXHQuZWRpdGluZ0NvbnRhaW5lciB7XFxuXFx0XFx0XFx0d2lkdGg6IGNhbGMoMTAwJSAtICN7JGNsaWNrYWJsZS1hcmVhfSk7XFxuXFx0XFx0XFx0bWFyZ2luOiBhdXRvO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0LyogU2Vjb25kIGxldmVsIG5lc3RpbmcgZm9yIGxpc3RzICovXFxuXFx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlbiB7XFxuXFx0XFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdFxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0XFx0ZmxleDogMCAxIGF1dG87XFxuXFx0XFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXHRcXHR3aWR0aDogMTAwJTtcXG5cXG5cXHRcXHQuYXBwLW5hdmlnYXRpb24tZW50cnkge1xcblxcdFxcdFxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcblxcdFxcdFxcdGZsZXgtd3JhcDogd3JhcDtcXG5cXHRcXHRcXHRwYWRkaW5nLWxlZnQ6ICRjbGlja2FibGUtYXJlYSAtICRpY29uLW1hcmdpbjtcXG5cXHRcXHR9XFxuXFx0fVxcbn1cXG5cXG4vKiBEZWxldGVkIGVudHJpZXMgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnlfX2RlbGV0ZWQge1xcblxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcblxcdGZsZXg6IDEgMSAwO1xcblxcdHBhZGRpbmctbGVmdDogJGNsaWNrYWJsZS1hcmVhIC0gJGljb24tbWFyZ2luICFpbXBvcnRhbnQ7XFxuXFx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19kZWxldGVkLWRlc2NyaXB0aW9uIHtcXG5cXHRcXHRwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFx0XFx0b3ZlcmZsb3c6IGhpZGRlbjtcXG5cXHRcXHRmbGV4OiAxIDEgMDtcXG5cXHRcXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcdFxcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcdFxcdGxpbmUtaGVpZ2h0OiAkY2xpY2thYmxlLWFyZWE7XFxuXFx0fVxcbn1cXG5cXG4vKiBNYWtlcyB0aGUgaWNvbiBvZiB0aGUgY29sbGFwc2libGUgZWxlbWVudCBkaXNhcHBlYXJcXG4qICBXaGVuIGhvdmVyaW5nIG9uIHRoZSByb290IGVsZW1lbnQgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWNvbGxhcHNpYmxlIHtcXG5cXHQvL3Nob3dzIHRoZSB0cmlhbmdsZSBidXR0b25cXG5cXHQuaWNvbi1jb2xsYXBzZSB7XFxuXFx0XFx0dmlzaWJpbGl0eTogaGlkZGVuO1xcblxcdH1cXG5cXHQmLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1uby1pY29uLFxcblxcdCY6aG92ZXIsICY6Zm9jdXMge1xcblxcdFxcdGEgLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LWljb24ge1xcblxcdFxcdFxcdC8vIGhpZGVzIHRoZSBpY29uXFxuXFx0XFx0XFx0dmlzaWJpbGl0eTogaGlkZGVuO1xcblxcdFxcdH1cXG5cXHRcXHQuaWNvbi1jb2xsYXBzZSB7XFxuXFx0XFx0XFx0Ly9zaG93cyB0aGUgdHJpYW5nbGUgYnV0dG9uXFxuXFx0XFx0XFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcXG5cXHRcXHR9XFxuXFx0XFx0Ly8gcHJldmVudCB0aGUgaWNvbiBvZiBjaGlsZHJlbiBlbGVtZW50cyBmcm9tIGJlaW5nIGhpZGRlblxcblxcdFxcdC8vIGJ5IHRoZSBwcmV2aW91cyBydWxlXFxuXFx0XFx0LmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlbiBsaTpub3QoLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZSkgYSA6Zmlyc3QtY2hpbGQge1xcblxcdFxcdFxcdHZpc2liaWxpdHk6IHZpc2libGU7XFxuXFx0XFx0fVxcblxcdH1cXG59XFxuXFxuLyogY291bnRlciBhbmQgYWN0aW9ucyAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fdXRpbHMge1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRmbGV4OiAwIDEgYXV0bztcXG59XFxuXFxuLyogY291bnRlciAqL1xcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9fY291bnRlci13cmFwcGVyIHtcXG5cXHQvLyBBZGQgc2xpZ2h0bHkgbW9yZSBzcGFjZSB0byB0aGUgcmlnaHQgb2YgdGhlIGNvdW50ZXJcXG5cXHRtYXJnaW4tcmlnaHQ6IDJweDtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0ZmxleDogMCAxIGF1dG87XFxufVxcblxcbi8vIFNUQVRFU1xcbi8qIGVkaXRpbmcgc3RhdGUgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWVkaXRpbmcge1xcblxcdC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1lZGl0IHtcXG5cXHRcXHR6LWluZGV4OiAyNTA7XFxuXFx0XFx0b3BhY2l0eTogMTtcXG5cXHR9XFxufVxcblxcbi8qIGRlbGV0ZWQgc3RhdGUgKi9cXG4uYXBwLW5hdmlnYXRpb24tZW50cnktLWRlbGV0ZWQge1xcblxcdC5hcHAtbmF2aWdhdGlvbi1lbnRyeS1kZWxldGVkIHtcXG5cXHRcXHR6LWluZGV4OiAyNTA7XFxuXFx0XFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcblxcdH1cXG59XFxuXFxuLyogcGlubmVkIHN0YXRlICovXFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1waW5uZWQge1xcblxcdG9yZGVyOiAyO1xcblxcdG1hcmdpbi10b3A6IGF1dG87XFxuXFx0Ly8gb25seSBwdXQgYSBtYXJnaW5Ub3AgYXV0byB0byB0aGUgZmlyc3Qgb25lIVxcblxcdH4gLmFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1waW5uZWQge1xcblxcdFxcdG1hcmdpbi10b3A6IDA7XFxuXFx0fVxcbn1cXG5cXG5cIixcIi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcblxcbi8vIGh0dHBzOi8vdXhwbGFuZXQub3JnLzctcnVsZXMtZm9yLW1vYmlsZS11aS1idXR0b24tZGVzaWduLWU5Y2YyZWE1NDU1Nlxcbi8vIHJlY29tbWVuZGVkIGlzIDQ4cHhcXG4vLyA0NHB4IGlzIHdoYXQgd2UgY2hvb3NlIGFuZCBoYXZlIHZlcnkgZ29vZCB2aXN1YWwtdG8tdXNhYmlsaXR5IHJhdGlvXFxuJGNsaWNrYWJsZS1hcmVhOiA0NHB4O1xcblxcbi8vIGJhY2tncm91bmQgaWNvbiBzaXplXFxuLy8gYWxzbyB1c2VkIGZvciB0aGUgc2NzcyBpY29uIGZvbnRcXG4kaWNvbi1zaXplOiAxNnB4O1xcblxcbi8vIGljb24gcGFkZGluZyBmb3IgYSAkY2xpY2thYmxlLWFyZWEgd2lkdGggYW5kIGEgJGljb24tc2l6ZSBpY29uXFxuLy8gKCA0NHB4IC0gMTZweCApIC8gMlxcbiRpY29uLW1hcmdpbjogKCRjbGlja2FibGUtYXJlYSAtICRpY29uLXNpemUpIC8gMjtcXG5cXG4vLyB0cmFuc3BhcmVuY3kgYmFja2dyb3VuZCBmb3IgaWNvbnNcXG4kaWNvbi1mb2N1cy1iZzogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHBvcG92ZXJtZW51IGFycm93IHdpZHRoIGZyb20gdGhlIHRyaWFuZ2xlIGNlbnRlclxcbiRhcnJvdy13aWR0aDogOXB4O1xcblxcbi8vIG9wYWNpdGllc1xcbiRvcGFjaXR5X2Rpc2FibGVkOiAuNTtcXG4kb3BhY2l0eV9ub3JtYWw6IC43O1xcbiRvcGFjaXR5X2Z1bGw6IDE7XFxuXFxuLy8gbWVudSByb3VuZCBiYWNrZ3JvdW5kIGhvdmVyIGZlZWRiYWNrXFxuLy8gZ29vZCBsb29raW5nIG9uIGRhcmsgQU5EIHdoaXRlIGJnXFxuJGFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gdmFyaW91cyBzdHJ1Y3R1cmUgZGF0YSB1c2VkIGluIHRoZSBcXG4vLyBgQXBwTmF2aWdhdGlvbmAgY29tcG9uZW50XFxuJGhlYWRlci1oZWlnaHQ6IDUwcHg7XFxuJG5hdmlnYXRpb24td2lkdGg6IDMwMHB4O1xcblxcbi8vIG1vYmlsZSBicmVha3BvaW50XFxuJGJyZWFrcG9pbnQtbW9iaWxlOiAxMDI0cHg7XFxuXCIsXCIkX19pY29uZm9udF9fZGF0YTogbWFwLW1lcmdlKGlmKGdsb2JhbF92YXJpYWJsZV9leGlzdHMoJ19faWNvbmZvbnRfX2RhdGEnKSwgJF9faWNvbmZvbnRfX2RhdGEsICgpKSwgKFxcblxcdFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI6IChcXG5cXHRcXHRcXFwiYXJyb3ctbGVmdC1kb3VibGVcXFwiOiBcXFwiXFxcXGVhMDFcXFwiLFxcblxcdFxcdFxcXCJhcnJvdy1sZWZ0XFxcIjogXFxcIlxcXFxlYTAyXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctcmlnaHQtZG91YmxlXFxcIjogXFxcIlxcXFxlYTAzXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctcmlnaHRcXFwiOiBcXFwiXFxcXGVhMDRcXFwiLFxcblxcdFxcdFxcXCJicmVhZGNydW1iXFxcIjogXFxcIlxcXFxlYTA1XFxcIixcXG5cXHRcXHRcXFwiY2hlY2ttYXJrXFxcIjogXFxcIlxcXFxlYTA2XFxcIixcXG5cXHRcXHRcXFwiY2xvc2VcXFwiOiBcXFwiXFxcXGVhMDdcXFwiLFxcblxcdFxcdFxcXCJjb25maXJtXFxcIjogXFxcIlxcXFxlYTA4XFxcIixcXG5cXHRcXHRcXFwiaW5mb1xcXCI6IFxcXCJcXFxcZWEwOVxcXCIsXFxuXFx0XFx0XFxcIm1lbnVcXFwiOiBcXFwiXFxcXGVhMGFcXFwiLFxcblxcdFxcdFxcXCJtb3JlXFxcIjogXFxcIlxcXFxlYTBiXFxcIixcXG5cXHRcXHRcXFwicGF1c2VcXFwiOiBcXFwiXFxcXGVhMGNcXFwiLFxcblxcdFxcdFxcXCJwbGF5XFxcIjogXFxcIlxcXFxlYTBkXFxcIixcXG5cXHRcXHRcXFwidHJpYW5nbGUtc1xcXCI6IFxcXCJcXFxcZWEwZVxcXCIsXFxuXFx0XFx0XFxcInVzZXItc3RhdHVzLWF3YXlcXFwiOiBcXFwiXFxcXGVhMGZcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1kbmRcXFwiOiBcXFwiXFxcXGVhMTBcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1pbnZpc2libGVcXFwiOiBcXFwiXFxcXGVhMTFcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1vbmxpbmVcXFwiOiBcXFwiXFxcXGVhMTJcXFwiXFxuXFx0KVxcbikpO1xcblxcblxcbiRjcmVhdGUtZm9udC1mYWNlOiB0cnVlICFkZWZhdWx0OyAvLyBzaG91bGQgdGhlIEBmb250LWZhY2UgdGFnIGdldCBjcmVhdGVkP1xcblxcbi8vIHNob3VsZCB0aGVyZSBiZSBhIGN1c3RvbSBjbGFzcyBmb3IgZWFjaCBpY29uPyB3aWxsIGJlIC5maWxlbmFtZVxcbiRjcmVhdGUtaWNvbi1jbGFzc2VzOiB0cnVlICFkZWZhdWx0OyBcXG5cXG4vLyB3aGF0IGlzIHRoZSBjb21tb24gY2xhc3MgbmFtZSB0aGF0IGljb25zIHNoYXJlPyBpbiB0aGlzIGNhc2UgaWNvbnMgbmVlZCB0byBoYXZlIC5pY29uLmZpbGVuYW1lIGluIHRoZWlyIGNsYXNzZXNcXG4vLyB0aGlzIHJlcXVpcmVzIHlvdSB0byBoYXZlIDIgY2xhc3NlcyBvbiBlYWNoIGljb24gaHRtbCBlbGVtZW50LCBidXQgcmVkdWNlZCByZWRlY2xhcmF0aW9uIG9mIHRoZSBmb250IGZhbWlseVxcbi8vIGZvciBlYWNoIGljb25cXG4kaWNvbi1jb21tb24tY2xhc3M6ICdpY29uJyAhZGVmYXVsdDtcXG5cXG4vLyBpZiB5b3Ugd2hpc2ggdG8gcHJlZml4IHlvdXIgZmlsZW5hbWVzLCBoZXJlIHlvdSBjYW4gZG8gc28uXFxuLy8gaWYgdGhpcyBzdHJpbmcgc3RheXMgZW1wdHksIHlvdXIgY2xhc3NlcyB3aWxsIHVzZSB0aGUgZmlsZW5hbWUsIGZvciBleGFtcGxlXFxuLy8gYW4gaWNvbiBjYWxsZWQgc3Rhci5zdmcgd2lsbCByZXN1bHQgaW4gYSBjbGFzcyBjYWxsZWQgLnN0YXJcXG4vLyBpZiB5b3UgdXNlIHRoZSBwcmVmaXggdG8gYmUgJ2ljb24tJyBpdCB3b3VsZCByZXN1bHQgaW4gLmljb24tc3RhclxcbiRpY29uLXByZWZpeDogJycgIWRlZmF1bHQ7IFxcblxcbi8vIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgZm9udCBncm91cFxcbkBmdW5jdGlvbiBpY29uZm9udC1ncm91cCgkZ3JvdXA6IG51bGwpIHtcXG4gIEBpZiAobnVsbCA9PSAkZ3JvdXApIHtcXG4gICAgJGdyb3VwOiBudGgobWFwLWtleXMoJF9faWNvbmZvbnRfX2RhdGEpLCAxKTtcXG4gIH1cXG4gIEBpZiAoZmFsc2UgPT0gbWFwLWhhcy1rZXkoJF9faWNvbmZvbnRfX2RhdGEsICRncm91cCkpIHtcXG4gICAgQHdhcm4gJ1VuZGVmaW5lZCBJY29uZm9udCBGYW1pbHkhJztcXG4gICAgQHJldHVybiAoKTtcXG4gIH1cXG4gIEByZXR1cm4gbWFwLWdldCgkX19pY29uZm9udF9fZGF0YSwgJGdyb3VwKTtcXG59XFxuXFxuLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBpY29uIG9mIGEgZ3JvdXBcXG5AZnVuY3Rpb24gaWNvbmZvbnQtaXRlbSgkbmFtZSkge1xcbiAgJHNsYXNoOiBzdHItaW5kZXgoJG5hbWUsICcvJyk7XFxuICAkZ3JvdXA6IG51bGw7XFxuICBAaWYgKCRzbGFzaCkge1xcbiAgICAkZ3JvdXA6IHN0ci1zbGljZSgkbmFtZSwgMCwgJHNsYXNoIC0gMSk7XFxuICAgICRuYW1lOiBzdHItc2xpY2UoJG5hbWUsICRzbGFzaCArIDEpO1xcbiAgfSBAZWxzZSB7XFxuICAgICRncm91cDogbnRoKG1hcC1rZXlzKCRfX2ljb25mb250X19kYXRhKSwgMSk7XFxuICB9XFxuICAkZ3JvdXA6IGljb25mb250LWdyb3VwKCRncm91cCk7XFxuICBAaWYgKGZhbHNlID09IG1hcC1oYXMta2V5KCRncm91cCwgJG5hbWUpKSB7XFxuICAgIEB3YXJuICdVbmRlZmluZWQgSWNvbmZvbnQgR2x5cGghJztcXG4gICAgQHJldHVybiAnJztcXG4gIH1cXG4gIEByZXR1cm4gbWFwLWdldCgkZ3JvdXAsICRuYW1lKTtcXG59XFxuXFxuLy8gY29tcGxldGUgbWl4aW5nIHRvIGluY2x1ZGUgdGhlIGljb25cXG4vLyB1c2FnZTpcXG4vLyAubXlfaWNvbnsgQGluY2x1ZGUgaWNvbmZvbnQoJ3N0YXInKSB9XFxuQG1peGluIGljb25mb250KCRpY29uKSB7XFxuICAkc2xhc2g6IHN0ci1pbmRleCgkaWNvbiwgJy8nKTtcXG4gICRncm91cDogbnVsbDtcXG4gIEBpZiAoJHNsYXNoKSB7XFxuICAgICRncm91cDogc3RyLXNsaWNlKCRpY29uLCAwLCAkc2xhc2ggLSAxKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAkZ3JvdXA6IG50aChtYXAta2V5cygkX19pY29uZm9udF9fZGF0YSksIDEpO1xcbiAgfVxcbiAgJjpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogJGdyb3VwO1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgIGNvbnRlbnQ6IGljb25mb250LWl0ZW0oJGljb24pO1xcbiAgfVxcbn1cXG5cXG4vLyBjcmVhdGVzIHRoZSBmb250IGZhY2UgdGFnIGlmIHRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZSAoZGVmYXVsdClcXG5AaWYgJGNyZWF0ZS1mb250LWZhY2UgPT0gdHJ1ZSB7XFxuICBAZm9udC1mYWNlIHtcXG4gICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICBzcmM6IHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYuZW90Jyk7IC8qIElFOSBDb21wYXQgTW9kZXMgKi9cXG4gICBzcmM6IHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgLyogSUU2LUlFOCAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYud29mZicpIGZvcm1hdCgnd29mZicpLCAvKiBQcmV0dHkgTW9kZXJuIEJyb3dzZXJzICovXFxuICAgICAgdXJsKCcuLi9pY29uZm9udC12dWUtODRjNDYxZi50dGYnKSAgZm9ybWF0KCd0cnVldHlwZScpLCAvKiBTYWZhcmksIEFuZHJvaWQsIGlPUyAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYuc3ZnJykgZm9ybWF0KCdzdmcnKTsgLyogTGVnYWN5IGlPUyAqL1xcbiAgfVxcbn1cXG5cXG4vLyBjcmVhdGVzIGljb24gY2xhc3NlcyBmb3IgZWFjaCBpbmRpdmlkdWFsIGxvYWRlZCBzdmcgKGRlZmF1bHQpXFxuQGlmICRjcmVhdGUtaWNvbi1jbGFzc2VzID09IHRydWUge1xcbiAgLiN7JGljb24tY29tbW9uLWNsYXNzfSB7XFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG5cXG4gICAgQGVhY2ggJGljb24sICRjb250ZW50IGluIG1hcC1nZXQoJF9faWNvbmZvbnRfX2RhdGEsIFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCIpIHtcXG4gICAgICAmLiN7JGljb24tcHJlZml4fSN7JGljb259OmJlZm9yZSB7XFxuICAgICAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgICAgIGNvbnRlbnQ6IGljb25mb250LWl0ZW0oXFxcImljb25mb250LXZ1ZS04NGM0NjFmLyN7JGljb259XFxcIik7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gZnJvbSBcIi4uLy4uL2ZvbnRzL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdFwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi53b2ZmXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzJfX18gZnJvbSBcIi4uLy4uL2ZvbnRzL2ljb25mb250LXZ1ZS04NGM0NjFmLnR0ZlwiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8zX19fIGZyb20gXCIuLi8uLi9mb250cy9pY29uZm9udC12dWUtODRjNDYxZi5zdmdcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzFfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzJfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8zX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbkBmb250LWZhY2Uge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICBzcmM6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIik7XFxuICAvKiBJRTkgQ29tcGF0IE1vZGVzICovXFxuICBzcmM6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIikgZm9ybWF0KFxcXCJlbWJlZGRlZC1vcGVudHlwZVxcXCIpLCB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fICsgXCIpIGZvcm1hdChcXFwid29mZlxcXCIpLCB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fICsgXCIpIGZvcm1hdChcXFwidHJ1ZXR5cGVcXFwiKSwgdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfM19fXyArIFwiKSBmb3JtYXQoXFxcInN2Z1xcXCIpO1xcbiAgLyogTGVnYWN5IGlPUyAqL1xcbn1cXG4uaWNvbiB7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBmb250LXdlaWdodDogNDAwO1xcbn1cXG4uaWNvbi5hcnJvdy1sZWZ0LWRvdWJsZTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ogVxcXCI7XFxufVxcbi5pY29uLmFycm93LWxlZnQ6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIJcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1yaWdodC1kb3VibGU6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqINcXFwiO1xcbn1cXG4uaWNvbi5hcnJvdy1yaWdodDpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ohFxcXCI7XFxufVxcbi5pY29uLmJyZWFkY3J1bWI6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIVcXFwiO1xcbn1cXG4uaWNvbi5jaGVja21hcms6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIZcXFwiO1xcbn1cXG4uaWNvbi5jbG9zZTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oh1xcXCI7XFxufVxcbi5pY29uLmNvbmZpcm06YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqIhcXFwiO1xcbn1cXG4uaWNvbi5pbmZvOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiJXFxcIjtcXG59XFxuLmljb24ubWVudTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oilxcXCI7XFxufVxcbi5pY29uLm1vcmU6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqItcXFwiO1xcbn1cXG4uaWNvbi5wYXVzZTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6ojFxcXCI7XFxufVxcbi5pY29uLnBsYXk6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgIGNvbnRlbnQ6IFxcXCLuqI1cXFwiO1xcbn1cXG4uaWNvbi50cmlhbmdsZS1zOmJlZm9yZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiO1xcbiAgICBjb250ZW50OiBcXFwi7qiOXFxcIjtcXG59XFxuLmljb24udXNlci1zdGF0dXMtYXdheTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oj1xcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWRuZDpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6okFxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLWludmlzaWJsZTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6okVxcXCI7XFxufVxcbi5pY29uLnVzZXItc3RhdHVzLW9ubGluZTpiZWZvcmUge1xcbiAgICBmb250LWZhbWlseTogXFxcImljb25mb250LXZ1ZS04NGM0NjFmXFxcIjtcXG4gICAgY29udGVudDogXFxcIu6oklxcXCI7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciB7XFxuICBmbGV4OiAxIDAgMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnlfX2lubGluZS1pbnB1dC1jb250YWluZXIgZm9ybSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0IHtcXG4gICAgICBmbGV4OiAxIDEgMTAwJTtcXG4gICAgICBmb250LXNpemU6IDE0cHg7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIGJ1dHRvbiB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIHdpZHRoOiA0NHB4ICFpbXBvcnRhbnQ7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgICBmb250LXNpemU6IDE2cHg7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIGJ1dHRvbjo6YmVmb3JlIHtcXG4gICAgICAgIG9wYWNpdHk6IDAuNztcXG59XFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19pbmxpbmUtaW5wdXQtY29udGFpbmVyIGZvcm0gYnV0dG9uOmhvdmVyOjpiZWZvcmUsIC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIGJ1dHRvbjpmb2N1czo6YmVmb3JlIHtcXG4gICAgICAgIG9wYWNpdHk6IDE7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIGJ1dHRvbi5pY29uLWNvbmZpcm0ge1xcbiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIGJ1dHRvbi5pY29uLWNvbmZpcm06YmVmb3JlIHtcXG4gICAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgICAgICAgY29udGVudDogXFxcIu6oiFxcXCI7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIGJ1dHRvbi5pY29uLWNvbmZpcm06aG92ZXIge1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4IHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpIDBweCAhaW1wb3J0YW50O1xcbn1cXG4uYXBwLW5hdmlnYXRpb24tZW50cnlfX2lubGluZS1pbnB1dC1jb250YWluZXIgZm9ybSBidXR0b24uaWNvbi1jbG9zZTpiZWZvcmUge1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICAgICAgY29udGVudDogXFxcIu6oh1xcXCI7XFxufVxcbi5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lciBmb3JtIC5pY29uLWNsb3NlIHtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9JbnB1dENvbmZpcm1DYW5jZWwudnVlXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9hc3NldHMvdmFyaWFibGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2ZvbnRzL3Njc3MvaWNvbmZvbnQtdnVlLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQWdCO0FDQWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHFCRTtBRXNFQTtFQUNDLG1DQUFtQztFQUNuQyw0Q0FBdUM7RUFBRSxxQkFBQTtFQUN6QyxtUEFHbUQ7RUFBRSxlQUFBO0FBQWdCO0FBTXRFO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtBQUFBO0FBRmxCO0lBTU0sbUNBQW1DO0lBQ25DLFlBNUdlO0FBQU87QUFxRzVCO0lBTU0sbUNBQW1DO0lBQ25DLFlBM0dRO0FBQU87QUFvR3JCO0lBTU0sbUNBQW1DO0lBQ25DLFlBMUdnQjtBQUFPO0FBbUc3QjtJQU1NLG1DQUFtQztJQUNuQyxZQXpHUztBQUFPO0FBa0d0QjtJQU1NLG1DQUFtQztJQUNuQyxZQXhHUTtBQUFPO0FBaUdyQjtJQU1NLG1DQUFtQztJQUNuQyxZQXZHTztBQUFPO0FBZ0dwQjtJQU1NLG1DQUFtQztJQUNuQyxZQXRHRztBQUFPO0FBK0ZoQjtJQU1NLG1DQUFtQztJQUNuQyxZQXJHSztBQUFPO0FBOEZsQjtJQU1NLG1DQUFtQztJQUNuQyxZQXBHRTtBQUFPO0FBNkZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBbkdFO0FBQU87QUE0RmY7SUFNTSxtQ0FBbUM7SUFDbkMsWUFsR0U7QUFBTztBQTJGZjtJQU1NLG1DQUFtQztJQUNuQyxZQWpHRztBQUFPO0FBMEZoQjtJQU1NLG1DQUFtQztJQUNuQyxZQWhHRTtBQUFPO0FBeUZmO0lBTU0sbUNBQW1DO0lBQ25DLFlBL0ZRO0FBQU87QUF3RnJCO0lBTU0sbUNBQW1DO0lBQ25DLFlBOUZjO0FBQU87QUF1RjNCO0lBTU0sbUNBQW1DO0lBQ25DLFlBN0ZhO0FBQU87QUFzRjFCO0lBTU0sbUNBQW1DO0lBQ25DLFlBNUZtQjtBQUFPO0FBcUZoQztJQU1NLG1DQUFtQztJQUNuQyxZQTNGZ0I7QUFBTztBRmlFL0I7RUFDQyxjQUFjO0VBQ2QsV0FBVztBQUFBO0FBRlo7SUFJRSxhQUFhO0FBQUE7QUFKZjtNQU1HLGNBQWM7TUFDZCxlQUFlO0FBQUE7QUFQbEI7TUFZRyxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixzQkFBaUM7TUFDakMsNkJBQTZCO01BQzdCLGdCQUFnQjtNQUNoQixlQUFlO0FBQUE7QUFsQmxCO1FBc0JJLFlDL0RlO0FBQUE7QUR5Q25CO1FBMkJLLFVDbkVXO0FBQUE7QUR3Q2hCO1FBaUNJLGlCQUFpQjtBQUFBO0FBakNyQjtVRUZJLG1DQWpGbUI7VUFrRm5CLGtCQUFrQjtVQUNsQixnQkFBZ0I7VUFDaEIsWUE1RVM7QUFBTztBRjJFcEI7UUFvQ0ksMkVBQTJFO0FBQUE7QUFwQy9FO1FFRkksbUNBakZtQjtRQWtGbkIsa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixZQTdFTztBQUFPO0FGNEVsQjtNQTRDRyxTQUFTO01BQ1QsWUFBWTtNQUNaLDZCQUE2QjtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5AaW1wb3J0ICcuLi8uLi9mb250cy9zY3NzL2ljb25mb250LXZ1ZSc7XFxuXFxuLmFwcC1uYXZpZ2F0aW9uLWVudHJ5X19pbmxpbmUtaW5wdXQtY29udGFpbmVyIHtcXG5cXHRmbGV4OiAxIDAgMTAwJTtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRmb3JtIHtcXG5cXHRcXHRkaXNwbGF5OiBmbGV4O1xcblxcdFxcdC5hcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0IHtcXG5cXHRcXHRcXHRmbGV4OiAxIDEgMTAwJTtcXG5cXHRcXHRcXHRmb250LXNpemU6IDE0cHg7XFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIHN1Ym1pdCBhbmQgY2FuY2VsIGJ1dHRvbnNcXG5cXHRcXHRidXR0b24ge1xcblxcdFxcdFxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0XFx0XFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRcXHRcXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXHRcXHRcXHR3aWR0aDogJGNsaWNrYWJsZS1hcmVhICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuXFx0XFx0XFx0YmFja2dyb3VuZDogbm9uZTtcXG5cXHRcXHRcXHRmb250LXNpemU6IDE2cHg7XFxuXFxuXFx0XFx0XFx0Ly8gaWNvbiBob3Zlci9mb2N1cyBmZWVkYmFja1xcblxcdFxcdFxcdCY6OmJlZm9yZSB7XFxuXFx0XFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfbm9ybWFsO1xcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHQmOmhvdmVyLFxcblxcdFxcdFxcdCY6Zm9jdXMge1xcblxcdFxcdFxcdFxcdCY6OmJlZm9yZSB7XFxuXFx0XFx0XFx0XFx0XFx0b3BhY2l0eTogJG9wYWNpdHlfZnVsbDtcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdCYuaWNvbi1jb25maXJtIHtcXG5cXHRcXHRcXHRcXHRAaW5jbHVkZSBpY29uZm9udCgnY29uZmlybScpO1xcblxcdFxcdFxcdFxcdGJvcmRlci1sZWZ0OiBub25lO1xcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHQmLmljb24tY29uZmlybTpob3ZlciB7XFxuXFx0XFx0XFx0XFx0Ym9yZGVyLXJhZGl1czogMHB4IHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpIDBweCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQmLmljb24tY2xvc2Uge1xcblxcdFxcdFxcdFxcdEBpbmNsdWRlIGljb25mb250KCdjbG9zZScpO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0XFx0Lmljb24tY2xvc2Uge1xcblxcdFxcdFxcdG1hcmdpbjogMDtcXG5cXHRcXHRcXHRib3JkZXI6IG5vbmU7XFxuXFx0XFx0XFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFx0XFx0fVxcblxcdH1cXG59XFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiLFwiJF9faWNvbmZvbnRfX2RhdGE6IG1hcC1tZXJnZShpZihnbG9iYWxfdmFyaWFibGVfZXhpc3RzKCdfX2ljb25mb250X19kYXRhJyksICRfX2ljb25mb250X19kYXRhLCAoKSksIChcXG5cXHRcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiOiAoXFxuXFx0XFx0XFxcImFycm93LWxlZnQtZG91YmxlXFxcIjogXFxcIlxcXFxlYTAxXFxcIixcXG5cXHRcXHRcXFwiYXJyb3ctbGVmdFxcXCI6IFxcXCJcXFxcZWEwMlxcXCIsXFxuXFx0XFx0XFxcImFycm93LXJpZ2h0LWRvdWJsZVxcXCI6IFxcXCJcXFxcZWEwM1xcXCIsXFxuXFx0XFx0XFxcImFycm93LXJpZ2h0XFxcIjogXFxcIlxcXFxlYTA0XFxcIixcXG5cXHRcXHRcXFwiYnJlYWRjcnVtYlxcXCI6IFxcXCJcXFxcZWEwNVxcXCIsXFxuXFx0XFx0XFxcImNoZWNrbWFya1xcXCI6IFxcXCJcXFxcZWEwNlxcXCIsXFxuXFx0XFx0XFxcImNsb3NlXFxcIjogXFxcIlxcXFxlYTA3XFxcIixcXG5cXHRcXHRcXFwiY29uZmlybVxcXCI6IFxcXCJcXFxcZWEwOFxcXCIsXFxuXFx0XFx0XFxcImluZm9cXFwiOiBcXFwiXFxcXGVhMDlcXFwiLFxcblxcdFxcdFxcXCJtZW51XFxcIjogXFxcIlxcXFxlYTBhXFxcIixcXG5cXHRcXHRcXFwibW9yZVxcXCI6IFxcXCJcXFxcZWEwYlxcXCIsXFxuXFx0XFx0XFxcInBhdXNlXFxcIjogXFxcIlxcXFxlYTBjXFxcIixcXG5cXHRcXHRcXFwicGxheVxcXCI6IFxcXCJcXFxcZWEwZFxcXCIsXFxuXFx0XFx0XFxcInRyaWFuZ2xlLXNcXFwiOiBcXFwiXFxcXGVhMGVcXFwiLFxcblxcdFxcdFxcXCJ1c2VyLXN0YXR1cy1hd2F5XFxcIjogXFxcIlxcXFxlYTBmXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtZG5kXFxcIjogXFxcIlxcXFxlYTEwXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtaW52aXNpYmxlXFxcIjogXFxcIlxcXFxlYTExXFxcIixcXG5cXHRcXHRcXFwidXNlci1zdGF0dXMtb25saW5lXFxcIjogXFxcIlxcXFxlYTEyXFxcIlxcblxcdClcXG4pKTtcXG5cXG5cXG4kY3JlYXRlLWZvbnQtZmFjZTogdHJ1ZSAhZGVmYXVsdDsgLy8gc2hvdWxkIHRoZSBAZm9udC1mYWNlIHRhZyBnZXQgY3JlYXRlZD9cXG5cXG4vLyBzaG91bGQgdGhlcmUgYmUgYSBjdXN0b20gY2xhc3MgZm9yIGVhY2ggaWNvbj8gd2lsbCBiZSAuZmlsZW5hbWVcXG4kY3JlYXRlLWljb24tY2xhc3NlczogdHJ1ZSAhZGVmYXVsdDsgXFxuXFxuLy8gd2hhdCBpcyB0aGUgY29tbW9uIGNsYXNzIG5hbWUgdGhhdCBpY29ucyBzaGFyZT8gaW4gdGhpcyBjYXNlIGljb25zIG5lZWQgdG8gaGF2ZSAuaWNvbi5maWxlbmFtZSBpbiB0aGVpciBjbGFzc2VzXFxuLy8gdGhpcyByZXF1aXJlcyB5b3UgdG8gaGF2ZSAyIGNsYXNzZXMgb24gZWFjaCBpY29uIGh0bWwgZWxlbWVudCwgYnV0IHJlZHVjZWQgcmVkZWNsYXJhdGlvbiBvZiB0aGUgZm9udCBmYW1pbHlcXG4vLyBmb3IgZWFjaCBpY29uXFxuJGljb24tY29tbW9uLWNsYXNzOiAnaWNvbicgIWRlZmF1bHQ7XFxuXFxuLy8gaWYgeW91IHdoaXNoIHRvIHByZWZpeCB5b3VyIGZpbGVuYW1lcywgaGVyZSB5b3UgY2FuIGRvIHNvLlxcbi8vIGlmIHRoaXMgc3RyaW5nIHN0YXlzIGVtcHR5LCB5b3VyIGNsYXNzZXMgd2lsbCB1c2UgdGhlIGZpbGVuYW1lLCBmb3IgZXhhbXBsZVxcbi8vIGFuIGljb24gY2FsbGVkIHN0YXIuc3ZnIHdpbGwgcmVzdWx0IGluIGEgY2xhc3MgY2FsbGVkIC5zdGFyXFxuLy8gaWYgeW91IHVzZSB0aGUgcHJlZml4IHRvIGJlICdpY29uLScgaXQgd291bGQgcmVzdWx0IGluIC5pY29uLXN0YXJcXG4kaWNvbi1wcmVmaXg6ICcnICFkZWZhdWx0OyBcXG5cXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IGZvbnQgZ3JvdXBcXG5AZnVuY3Rpb24gaWNvbmZvbnQtZ3JvdXAoJGdyb3VwOiBudWxsKSB7XFxuICBAaWYgKG51bGwgPT0gJGdyb3VwKSB7XFxuICAgICRncm91cDogbnRoKG1hcC1rZXlzKCRfX2ljb25mb250X19kYXRhKSwgMSk7XFxuICB9XFxuICBAaWYgKGZhbHNlID09IG1hcC1oYXMta2V5KCRfX2ljb25mb250X19kYXRhLCAkZ3JvdXApKSB7XFxuICAgIEB3YXJuICdVbmRlZmluZWQgSWNvbmZvbnQgRmFtaWx5ISc7XFxuICAgIEByZXR1cm4gKCk7XFxuICB9XFxuICBAcmV0dXJuIG1hcC1nZXQoJF9faWNvbmZvbnRfX2RhdGEsICRncm91cCk7XFxufVxcblxcbi8vIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgaWNvbiBvZiBhIGdyb3VwXFxuQGZ1bmN0aW9uIGljb25mb250LWl0ZW0oJG5hbWUpIHtcXG4gICRzbGFzaDogc3RyLWluZGV4KCRuYW1lLCAnLycpO1xcbiAgJGdyb3VwOiBudWxsO1xcbiAgQGlmICgkc2xhc2gpIHtcXG4gICAgJGdyb3VwOiBzdHItc2xpY2UoJG5hbWUsIDAsICRzbGFzaCAtIDEpO1xcbiAgICAkbmFtZTogc3RyLXNsaWNlKCRuYW1lLCAkc2xhc2ggKyAxKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAkZ3JvdXA6IG50aChtYXAta2V5cygkX19pY29uZm9udF9fZGF0YSksIDEpO1xcbiAgfVxcbiAgJGdyb3VwOiBpY29uZm9udC1ncm91cCgkZ3JvdXApO1xcbiAgQGlmIChmYWxzZSA9PSBtYXAtaGFzLWtleSgkZ3JvdXAsICRuYW1lKSkge1xcbiAgICBAd2FybiAnVW5kZWZpbmVkIEljb25mb250IEdseXBoISc7XFxuICAgIEByZXR1cm4gJyc7XFxuICB9XFxuICBAcmV0dXJuIG1hcC1nZXQoJGdyb3VwLCAkbmFtZSk7XFxufVxcblxcbi8vIGNvbXBsZXRlIG1peGluZyB0byBpbmNsdWRlIHRoZSBpY29uXFxuLy8gdXNhZ2U6XFxuLy8gLm15X2ljb257IEBpbmNsdWRlIGljb25mb250KCdzdGFyJykgfVxcbkBtaXhpbiBpY29uZm9udCgkaWNvbikge1xcbiAgJHNsYXNoOiBzdHItaW5kZXgoJGljb24sICcvJyk7XFxuICAkZ3JvdXA6IG51bGw7XFxuICBAaWYgKCRzbGFzaCkge1xcbiAgICAkZ3JvdXA6IHN0ci1zbGljZSgkaWNvbiwgMCwgJHNsYXNoIC0gMSk7XFxuICB9IEBlbHNlIHtcXG4gICAgJGdyb3VwOiBudGgobWFwLWtleXMoJF9faWNvbmZvbnRfX2RhdGEpLCAxKTtcXG4gIH1cXG4gICY6YmVmb3JlIHtcXG4gICAgZm9udC1mYW1pbHk6ICRncm91cDtcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBjb250ZW50OiBpY29uZm9udC1pdGVtKCRpY29uKTtcXG4gIH1cXG59XFxuXFxuLy8gY3JlYXRlcyB0aGUgZm9udCBmYWNlIHRhZyBpZiB0aGUgdmFyaWFibGUgaXMgc2V0IHRvIHRydWUgKGRlZmF1bHQpXFxuQGlmICRjcmVhdGUtZm9udC1mYWNlID09IHRydWUge1xcbiAgQGZvbnQtZmFjZSB7XFxuICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgc3JjOiB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdCcpOyAvKiBJRTkgQ29tcGF0IE1vZGVzICovXFxuICAgc3JjOiB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIC8qIElFNi1JRTggKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgLyogUHJldHR5IE1vZGVybiBCcm93c2VycyAqL1xcbiAgICAgIHVybCgnLi4vaWNvbmZvbnQtdnVlLTg0YzQ2MWYudHRmJykgIGZvcm1hdCgndHJ1ZXR5cGUnKSwgLyogU2FmYXJpLCBBbmRyb2lkLCBpT1MgKi9cXG4gICAgICB1cmwoJy4uL2ljb25mb250LXZ1ZS04NGM0NjFmLnN2ZycpIGZvcm1hdCgnc3ZnJyk7IC8qIExlZ2FjeSBpT1MgKi9cXG4gIH1cXG59XFxuXFxuLy8gY3JlYXRlcyBpY29uIGNsYXNzZXMgZm9yIGVhY2ggaW5kaXZpZHVhbCBsb2FkZWQgc3ZnIChkZWZhdWx0KVxcbkBpZiAkY3JlYXRlLWljb24tY2xhc3NlcyA9PSB0cnVlIHtcXG4gIC4jeyRpY29uLWNvbW1vbi1jbGFzc30ge1xcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuXFxuICAgIEBlYWNoICRpY29uLCAkY29udGVudCBpbiBtYXAtZ2V0KCRfX2ljb25mb250X19kYXRhLCBcXFwiaWNvbmZvbnQtdnVlLTg0YzQ2MWZcXFwiKSB7XFxuICAgICAgJi4jeyRpY29uLXByZWZpeH0jeyRpY29ufTpiZWZvcmUge1xcbiAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJpY29uZm9udC12dWUtODRjNDYxZlxcXCI7XFxuICAgICAgICBjb250ZW50OiBpY29uZm9udC1pdGVtKFxcXCJpY29uZm9udC12dWUtODRjNDYxZi8jeyRpY29ufVxcXCIpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbi5wb3BvdmVyIHtcXG4gIHotaW5kZXg6IDEwMDAwMDtcXG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDEwcHggdmFyKC0tY29sb3ItYm94LXNoYWRvdykpO1xcbn1cXG4ucG9wb3Zlcl9faW5uZXIge1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbWFpbi10ZXh0KTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxufVxcbi5wb3BvdmVyX19hcnJvdyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTtcXG4gICAgd2lkdGg6IDA7XFxuICAgIGhlaWdodDogMDtcXG4gICAgbWFyZ2luOiAxMHB4O1xcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW1haW4tYmFja2dyb3VuZCk7XFxufVxcbi5wb3BvdmVyW3gtcGxhY2VtZW50Xj0ndG9wJ10ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xcbn1cXG4ucG9wb3Zlclt4LXBsYWNlbWVudF49J3RvcCddIC5wb3BvdmVyX19hcnJvdyB7XFxuICAgICAgYm90dG9tOiAtMTBweDtcXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XFxuICAgICAgbWFyZ2luLXRvcDogMDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICAgIGJvcmRlci13aWR0aDogMTBweCAxMHB4IDAgMTBweDtcXG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG59XFxuLnBvcG92ZXJbeC1wbGFjZW1lbnRePSdib3R0b20nXSB7XFxuICAgIG1hcmdpbi10b3A6IDEwcHg7XFxufVxcbi5wb3BvdmVyW3gtcGxhY2VtZW50Xj0nYm90dG9tJ10gLnBvcG92ZXJfX2Fycm93IHtcXG4gICAgICB0b3A6IC0xMHB4O1xcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gJGFycm93LXdpZHRoKTtcXG4gICAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAwIDEwcHggMTBweCAxMHB4O1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbn1cXG4ucG9wb3Zlclt4LXBsYWNlbWVudF49J3JpZ2h0J10ge1xcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcXG59XFxuLnBvcG92ZXJbeC1wbGFjZW1lbnRePSdyaWdodCddIC5wb3BvdmVyX19hcnJvdyB7XFxuICAgICAgdG9wOiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XFxuICAgICAgbGVmdDogLTEwcHg7XFxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIGJvcmRlci13aWR0aDogMTBweCAxMHB4IDEwcHggMDtcXG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcbi5wb3BvdmVyW3gtcGxhY2VtZW50Xj0nbGVmdCddIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbn1cXG4ucG9wb3Zlclt4LXBsYWNlbWVudF49J2xlZnQnXSAucG9wb3Zlcl9fYXJyb3cge1xcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcbiAgICAgIHJpZ2h0OiAtMTBweDtcXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgYm9yZGVyLXdpZHRoOiAxMHB4IDAgMTBweCAxMHB4O1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxufVxcbi5wb3BvdmVyW2FyaWEtaGlkZGVuPSd0cnVlJ10ge1xcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKSwgdmlzaWJpbGl0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spO1xcbiAgICBvcGFjaXR5OiAwO1xcbn1cXG4ucG9wb3ZlclthcmlhLWhpZGRlbj0nZmFsc2UnXSB7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0aW9uLXF1aWNrKTtcXG4gICAgb3BhY2l0eTogMTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vUG9wb3Zlci52dWVcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Fzc2V0cy92YXJpYWJsZXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxnQkFBZ0I7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VEcUJFO0FBMkZGO0VBQ0MsZUFBZTtFQUNmLHlCQUF5QjtFQUV6Qix1REFBdUQ7QUFBQTtBQUV2RDtJQUNDLFVBQVU7SUFDViw2QkFBNkI7SUFDN0IsbUNBQW1DO0lBQ25DLHdDQUF3QztBQUFBO0FBR3pDO0lBQ0Msa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixRQUFRO0lBQ1IsU0FBUztJQUNULFlBcEJnQjtJQXFCaEIsbUJBQW1CO0lBQ25CLDBDQUEwQztBQUFBO0FBcEI1QztJQXdCRSxtQkExQmdCO0FBQUE7QUFFbEI7TUEyQkcsYUE3QmU7TUE4QmYsOEJBQThCO01BQzlCLGFBQWE7TUFDYixnQkFBZ0I7TUFDaEIsOEJBakNlO01Ba0NmLDBDQUEwQztNQUMxQywyQ0FBMkM7TUFDM0MseUNBQXlDO0FBQUE7QUFsQzVDO0lBdUNFLGdCQXpDZ0I7QUFBQTtBQUVsQjtNQTBDRyxVQTVDZTtNQTZDZiw4QkFBOEI7TUFDOUIsYUFBYTtNQUNiLGdCQUFnQjtNQUNoQiw4QkFoRGU7TUFpRGYsd0NBQXdDO01BQ3hDLDBDQUEwQztNQUMxQyx5Q0FBeUM7QUFBQTtBQWpENUM7SUFzREUsaUJBeERnQjtBQUFBO0FBRWxCO01BeURHLDZCQUE2QjtNQUM3QixXQTVEZTtNQTZEZixlQUFlO01BQ2YsY0FBYztNQUNkLDhCQUFzRDtNQUN0RCx3Q0FBd0M7TUFDeEMsMkNBQTJDO01BQzNDLHlDQUF5QztBQUFBO0FBaEU1QztJQXFFRSxrQkF2RWdCO0FBQUE7QUFFbEI7TUF3RUcsNkJBQTZCO01BQzdCLFlBM0VlO01BNEVmLGVBQWU7TUFDZixjQUFjO01BQ2QsOEJBOUVlO01BK0VmLHdDQUF3QztNQUN4QywwQ0FBMEM7TUFDMUMsMkNBQTJDO0FBQUE7QUEvRTlDO0lBb0ZFLGtCQUFrQjtJQUNsQiw2RUFBNkU7SUFDN0UsVUFBVTtBQUFBO0FBdEZaO0lBMEZFLG1CQUFtQjtJQUNuQiwwQ0FBMEM7SUFDMUMsVUFBVTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIiRzY29wZV92ZXJzaW9uOlxcXCI4NGM0NjFmXFxcIjsgQGltcG9ydCAndmFyaWFibGVzJztcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG4kYXJyb3ctd2lkdGg6IDEwcHg7XFxuXFxuLnBvcG92ZXIge1xcblxcdHotaW5kZXg6IDEwMDAwMDtcXG5cXHRkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcblxcblxcdGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMTBweCB2YXIoLS1jb2xvci1ib3gtc2hhZG93KSk7XFxuXFxuXFx0Jl9faW5uZXIge1xcblxcdFxcdHBhZGRpbmc6IDA7XFxuXFx0XFx0Y29sb3I6IHZhcigtLWNvbG9yLW1haW4tdGV4dCk7XFxuXFx0XFx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XFxuXFx0XFx0YmFja2dyb3VuZDogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG5cXHR9XFxuXFxuXFx0Jl9fYXJyb3cge1xcblxcdFxcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXHRcXHR6LWluZGV4OiAxO1xcblxcdFxcdHdpZHRoOiAwO1xcblxcdFxcdGhlaWdodDogMDtcXG5cXHRcXHRtYXJnaW46ICRhcnJvdy13aWR0aDtcXG5cXHRcXHRib3JkZXItc3R5bGU6IHNvbGlkO1xcblxcdFxcdGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItbWFpbi1iYWNrZ3JvdW5kKTtcXG5cXHR9XFxuXFxuXFx0Jlt4LXBsYWNlbWVudF49J3RvcCddIHtcXG5cXHRcXHRtYXJnaW4tYm90dG9tOiAkYXJyb3ctd2lkdGg7XFxuXFxuXFx0XFx0LnBvcG92ZXJfX2Fycm93IHtcXG5cXHRcXHRcXHRib3R0b206IC0kYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0bGVmdDogY2FsYyg1MCUgLSAkYXJyb3ctd2lkdGgpO1xcblxcdFxcdFxcdG1hcmdpbi10b3A6IDA7XFxuXFx0XFx0XFx0bWFyZ2luLWJvdHRvbTogMDtcXG5cXHRcXHRcXHRib3JkZXItd2lkdGg6ICRhcnJvdy13aWR0aCAkYXJyb3ctd2lkdGggMCAkYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHQmW3gtcGxhY2VtZW50Xj0nYm90dG9tJ10ge1xcblxcdFxcdG1hcmdpbi10b3A6ICRhcnJvdy13aWR0aDtcXG5cXG5cXHRcXHQucG9wb3Zlcl9fYXJyb3cge1xcblxcdFxcdFxcdHRvcDogLSRhcnJvdy13aWR0aDtcXG5cXHRcXHRcXHRsZWZ0OiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XFxuXFx0XFx0XFx0bWFyZ2luLXRvcDogMDtcXG5cXHRcXHRcXHRtYXJnaW4tYm90dG9tOiAwO1xcblxcdFxcdFxcdGJvcmRlci13aWR0aDogMCAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoICRhcnJvdy13aWR0aDtcXG5cXHRcXHRcXHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdCZbeC1wbGFjZW1lbnRePSdyaWdodCddIHtcXG5cXHRcXHRtYXJnaW4tbGVmdDogJGFycm93LXdpZHRoO1xcblxcblxcdFxcdC5wb3BvdmVyX19hcnJvdyB7XFxuXFx0XFx0XFx0dG9wOiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XFxuXFx0XFx0XFx0bGVmdDogLSRhcnJvdy13aWR0aDtcXG5cXHRcXHRcXHRtYXJnaW4tcmlnaHQ6IDA7XFxuXFx0XFx0XFx0bWFyZ2luLWxlZnQ6IDA7XFxuXFx0XFx0XFx0Ym9yZGVyLXdpZHRoOiAkYXJyb3ctd2lkdGggJGFycm93LXdpZHRoICRhcnJvdy13aWR0aCAwO1xcblxcdFxcdFxcdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XFxuXFx0XFx0XFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdCZbeC1wbGFjZW1lbnRePSdsZWZ0J10ge1xcblxcdFxcdG1hcmdpbi1yaWdodDogJGFycm93LXdpZHRoO1xcblxcblxcdFxcdC5wb3BvdmVyX19hcnJvdyB7XFxuXFx0XFx0XFx0dG9wOiBjYWxjKDUwJSAtICRhcnJvdy13aWR0aCk7XFxuXFx0XFx0XFx0cmlnaHQ6IC0kYXJyb3ctd2lkdGg7XFxuXFx0XFx0XFx0bWFyZ2luLXJpZ2h0OiAwO1xcblxcdFxcdFxcdG1hcmdpbi1sZWZ0OiAwO1xcblxcdFxcdFxcdGJvcmRlci13aWR0aDogJGFycm93LXdpZHRoIDAgJGFycm93LXdpZHRoICRhcnJvdy13aWR0aDtcXG5cXHRcXHRcXHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdFxcdGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG5cXHRcXHRcXHRib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0JlthcmlhLWhpZGRlbj0ndHJ1ZSddIHtcXG5cXHRcXHR2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFx0XFx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1hbmltYXRpb24tcXVpY2spLCB2aXNpYmlsaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayk7XFxuXFx0XFx0b3BhY2l0eTogMDtcXG5cXHR9XFxuXFxuXFx0JlthcmlhLWhpZGRlbj0nZmFsc2UnXSB7XFxuXFx0XFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcXG5cXHRcXHR0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGlvbi1xdWljayk7XFxuXFx0XFx0b3BhY2l0eTogMTtcXG5cXHR9XFxufVxcblxcblwiLFwiLyoqXFxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XFxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXFxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXFxuICpcXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxcbiAqXFxuICovXFxuXFxuLy8gaHR0cHM6Ly91eHBsYW5ldC5vcmcvNy1ydWxlcy1mb3ItbW9iaWxlLXVpLWJ1dHRvbi1kZXNpZ24tZTljZjJlYTU0NTU2XFxuLy8gcmVjb21tZW5kZWQgaXMgNDhweFxcbi8vIDQ0cHggaXMgd2hhdCB3ZSBjaG9vc2UgYW5kIGhhdmUgdmVyeSBnb29kIHZpc3VhbC10by11c2FiaWxpdHkgcmF0aW9cXG4kY2xpY2thYmxlLWFyZWE6IDQ0cHg7XFxuXFxuLy8gYmFja2dyb3VuZCBpY29uIHNpemVcXG4vLyBhbHNvIHVzZWQgZm9yIHRoZSBzY3NzIGljb24gZm9udFxcbiRpY29uLXNpemU6IDE2cHg7XFxuXFxuLy8gaWNvbiBwYWRkaW5nIGZvciBhICRjbGlja2FibGUtYXJlYSB3aWR0aCBhbmQgYSAkaWNvbi1zaXplIGljb25cXG4vLyAoIDQ0cHggLSAxNnB4ICkgLyAyXFxuJGljb24tbWFyZ2luOiAoJGNsaWNrYWJsZS1hcmVhIC0gJGljb24tc2l6ZSkgLyAyO1xcblxcbi8vIHRyYW5zcGFyZW5jeSBiYWNrZ3JvdW5kIGZvciBpY29uc1xcbiRpY29uLWZvY3VzLWJnOiByZ2JhKDEyNywgMTI3LCAxMjcsIC4yNSk7XFxuXFxuLy8gcG9wb3Zlcm1lbnUgYXJyb3cgd2lkdGggZnJvbSB0aGUgdHJpYW5nbGUgY2VudGVyXFxuJGFycm93LXdpZHRoOiA5cHg7XFxuXFxuLy8gb3BhY2l0aWVzXFxuJG9wYWNpdHlfZGlzYWJsZWQ6IC41O1xcbiRvcGFjaXR5X25vcm1hbDogLjc7XFxuJG9wYWNpdHlfZnVsbDogMTtcXG5cXG4vLyBtZW51IHJvdW5kIGJhY2tncm91bmQgaG92ZXIgZmVlZGJhY2tcXG4vLyBnb29kIGxvb2tpbmcgb24gZGFyayBBTkQgd2hpdGUgYmdcXG4kYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyB2YXJpb3VzIHN0cnVjdHVyZSBkYXRhIHVzZWQgaW4gdGhlIFxcbi8vIGBBcHBOYXZpZ2F0aW9uYCBjb21wb25lbnRcXG4kaGVhZGVyLWhlaWdodDogNTBweDtcXG4kbmF2aWdhdGlvbi13aWR0aDogMzAwcHg7XFxuXFxuLy8gbW9iaWxlIGJyZWFrcG9pbnRcXG4kYnJlYWtwb2ludC1tb2JpbGU6IDEwMjRweDtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgcmV0dXJuIFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChjb250ZW50LCBcIn1cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMl0gPSBcIlwiLmNvbmNhdChtZWRpYVF1ZXJ5LCBcIiBhbmQgXCIpLmNvbmNhdChpdGVtWzJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgIShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pIHtcbiAgdmFyIF9pdGVtID0gX3NsaWNlZFRvQXJyYXkoaXRlbSwgNCksXG4gICAgICBjb250ZW50ID0gX2l0ZW1bMV0sXG4gICAgICBjc3NNYXBwaW5nID0gX2l0ZW1bM107XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBvcHRpb25zID0ge307XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlLCBuby1wYXJhbS1yZWFzc2lnblxuXG5cbiAgdXJsID0gdXJsICYmIHVybC5fX2VzTW9kdWxlID8gdXJsLmRlZmF1bHQgOiB1cmw7XG5cbiAgaWYgKHR5cGVvZiB1cmwgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9IC8vIElmIHVybCBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gcXVvdGVzLCByZW1vdmUgdGhlbVxuXG5cbiAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdXJsID0gdXJsLnNsaWNlKDEsIC0xKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICB1cmwgKz0gb3B0aW9ucy5oYXNoO1xuICB9IC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgLy8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcblxuXG4gIGlmICgvW1wiJygpIFxcdFxcbl0vLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BY3Rpb25CdXR0b24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MmU5MjliNGYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BY3Rpb25zLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmNDU4NjRiJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zYzRhY2ZiMyZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZXNvbHZlLXVybC1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTEtMyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vSW5wdXRDb25maXJtQ2FuY2VsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwibGlcIixcbiAgICB7IHN0YXRpY0NsYXNzOiBcImFjdGlvblwiLCBjbGFzczogeyBcImFjdGlvbi0tZGlzYWJsZWRcIjogX3ZtLmRpc2FibGVkIH0gfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGlvbi1idXR0b25cIixcbiAgICAgICAgICBjbGFzczogeyBmb2N1c2FibGU6IF92bS5pc0ZvY3VzYWJsZSB9LFxuICAgICAgICAgIGF0dHJzOiB7IFwiYXJpYS1sYWJlbFwiOiBfdm0uYXJpYUxhYmVsIH0sXG4gICAgICAgICAgb246IHsgY2xpY2s6IF92bS5vbkNsaWNrIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGlvbi1idXR0b25fX2ljb25cIixcbiAgICAgICAgICAgICAgY2xhc3M6IFtfdm0uaXNJY29uVXJsID8gXCJhY3Rpb24tYnV0dG9uX19pY29uLS11cmxcIiA6IF92bS5pY29uXSxcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IF92bS5pc0ljb25VcmwgPyBcInVybChcIiArIF92bS5pY29uICsgXCIpXCIgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbX3ZtLl90KFwiaWNvblwiKV0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS50aXRsZVxuICAgICAgICAgICAgPyBfYyhcInBcIiwgW1xuICAgICAgICAgICAgICAgIF9jKFwic3Ryb25nXCIsIHsgc3RhdGljQ2xhc3M6IFwiYWN0aW9uLWJ1dHRvbl9fdGl0bGVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG5cXHRcXHRcXHRcXHRcIiArIF92bS5fcyhfdm0udGl0bGUpICsgXCJcXG5cXHRcXHRcXHRcIilcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgIF9jKFwiYnJcIiksXG4gICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYWN0aW9uLWJ1dHRvbl9fbG9uZ3RleHRcIixcbiAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IHRleHRDb250ZW50OiBfdm0uX3MoX3ZtLnRleHQpIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOiBfdm0uaXNMb25nVGV4dFxuICAgICAgICAgICAgPyBfYyhcInBcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGlvbi1idXR0b25fX2xvbmd0ZXh0XCIsXG4gICAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdGV4dENvbnRlbnQ6IF92bS5fcyhfdm0udGV4dCkgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBfYyhcInNwYW5cIiwgeyBzdGF0aWNDbGFzczogXCJhY3Rpb24tYnV0dG9uX190ZXh0XCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnRleHQpKVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIGZhbHNlID8gX3ZtLl90KFwiZGVmYXVsdFwiKSA6IF92bS5fZSgpXG4gICAgICAgIF0sXG4gICAgICAgIDJcbiAgICAgIClcbiAgICBdXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfb2JqLCBfb2JqJDFcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX3ZtLmlzVmFsaWRTaW5nbGVBY3Rpb24gJiYgIV92bS5mb3JjZU1lbnVcbiAgICA/IF9jKFxuICAgICAgICBcImVsZW1lbnRcIixcbiAgICAgICAgX3ZtLl9iKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwidG9vbHRpcFwiLFxuICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi10b29sdGlwLmF1dG9cIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmZpcnN0QWN0aW9uLnRleHQsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJmaXJzdEFjdGlvbi50ZXh0XCIsXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7IGF1dG86IHRydWUgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYWN0aW9uLWl0ZW0gYWN0aW9uLWl0ZW0tLXNpbmdsZVwiLFxuICAgICAgICAgICAgY2xhc3M6XG4gICAgICAgICAgICAgICgoX29iaiA9IHt9KSxcbiAgICAgICAgICAgICAgKF9vYmpbX3ZtLmZpcnN0QWN0aW9uLmljb25dID0gX3ZtLmZpcnN0QWN0aW9uLmljb24pLFxuICAgICAgICAgICAgICAoX29ialtfdm0uZmlyc3RBY3Rpb25DbGFzc10gPSBfdm0uZmlyc3RBY3Rpb25DbGFzcyksXG4gICAgICAgICAgICAgIF9vYmopLFxuICAgICAgICAgICAgYXR0cnM6IHsgcmVsOiBcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIiwgZGlzYWJsZWQ6IF92bS5kaXNhYmxlZCB9LFxuICAgICAgICAgICAgb246IF92bS5fZCh7IGZvY3VzOiBfdm0ub25Gb2N1cywgYmx1cjogX3ZtLm9uQmx1ciB9LCBbXG4gICAgICAgICAgICAgIF92bS5maXJzdEFjdGlvbkV2ZW50QmluZGluZyxcbiAgICAgICAgICAgICAgX3ZtLmV4ZWNGaXJzdEFjdGlvblxuICAgICAgICAgICAgXSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZWxlbWVudFwiLFxuICAgICAgICAgIF92bS5maXJzdEFjdGlvbkJpbmRpbmcsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiVk5vZGVzXCIsIHsgYXR0cnM6IHsgdm5vZGVzOiBfdm0uZmlyc3RBY3Rpb25JY29uU2xvdCB9IH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHsgYXR0cnM6IHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBoaWRkZW46IFwiXCIgfSB9LFxuICAgICAgICAgICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIDogX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmhhc011bHRpcGxlQWN0aW9ucyB8fCBfdm0uZm9yY2VNZW51LFxuICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImhhc011bHRpcGxlQWN0aW9ucyB8fCBmb3JjZU1lbnVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYWN0aW9uLWl0ZW1cIixcbiAgICAgICAgICBjbGFzczogeyBcImFjdGlvbi1pdGVtLS1vcGVuXCI6IF92bS5vcGVuZWQgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcIlBvcG92ZXJcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgICAgICBcImhhbmRsZS1yZXNpemVcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvcGVuOiBfdm0ub3BlbmVkLFxuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogX3ZtLnBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICBcImJvdW5kYXJpZXMtZWxlbWVudFwiOiBfdm0uYm91bmRhcmllc0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBfdm0uY29udGFpbmVyXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgXCJ1cGRhdGU6b3BlblwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIF92bS5vcGVuZWQgPSAkZXZlbnRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNob3c6IF92bS5vcGVuTWVudSxcbiAgICAgICAgICAgICAgICBcImFmdGVyLXNob3dcIjogX3ZtLm9uT3BlbixcbiAgICAgICAgICAgICAgICBoaWRlOiBfdm0uY2xvc2VNZW51XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcmVmOiBcIm1lbnVCdXR0b25cIixcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24gYWN0aW9uLWl0ZW1fX21lbnV0b2dnbGVcIixcbiAgICAgICAgICAgICAgICAgIGNsYXNzOlxuICAgICAgICAgICAgICAgICAgICAoKF9vYmokMSA9IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgKF9vYmokMVtfdm0uZGVmYXVsdEljb25dID0gIV92bS5pY29uU2xvdElzUG9wdWxhdGVkKSxcbiAgICAgICAgICAgICAgICAgICAgKF9vYmokMVtcImFjdGlvbi1pdGVtX19tZW51dG9nZ2xlLS13aXRoLXRpdGxlXCJdID1cbiAgICAgICAgICAgICAgICAgICAgICBfdm0ubWVudVRpdGxlKSxcbiAgICAgICAgICAgICAgICAgICAgKF9vYmokMVtcImFjdGlvbi1pdGVtX19tZW51dG9nZ2xlLS1wcmltYXJ5XCJdID0gX3ZtLnByaW1hcnkpLFxuICAgICAgICAgICAgICAgICAgICBfb2JqJDEpLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc2xvdDogXCJ0cmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBfdm0uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfdm0uYXJpYUxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBfdm0ucmFuZG9tSWQsXG4gICAgICAgICAgICAgICAgICAgIFwidGVzdC1hdHRyXCI6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogX3ZtLm9wZW5lZCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgZm9jdXM6IF92bS5vbkZvY3VzLCBibHVyOiBfdm0ub25CbHVyIH0sXG4gICAgICAgICAgICAgICAgICBzbG90OiBcInRyaWdnZXJcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX3ZtLl90KFwiaWNvblwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIlxcblxcdFxcdFxcdFwiICsgX3ZtLl9zKF92bS5tZW51VGl0bGUpICsgXCJcXG5cXHRcXHRcIilcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ub3BlbmVkLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwib3BlbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHJlZjogXCJtZW51XCIsXG4gICAgICAgICAgICAgICAgICBjbGFzczogeyBvcGVuOiBfdm0ub3BlbmVkIH0sXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyB0YWJpbmRleDogXCItMVwiIH0sXG4gICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICBrZXlkb3duOiBbXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICEkZXZlbnQudHlwZS5pbmRleE9mKFwia2V5XCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ1cFwiLCAzOCwgJGV2ZW50LmtleSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycm93VXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5jdHJsS2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zaGlmdEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5tZXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZm9jdXNQcmV2aW91c0FjdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgISRldmVudC50eXBlLmluZGV4T2YoXCJrZXlcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcImRvd25cIiwgNDAsICRldmVudC5rZXksIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRvd25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFycm93RG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnNoaWZ0S2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5hbHRLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50Lm1ldGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5mb2N1c05leHRBY3Rpb24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICEkZXZlbnQudHlwZS5pbmRleE9mKFwia2V5XCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJ0YWJcIiwgOSwgJGV2ZW50LmtleSwgXCJUYWJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuY3RybEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc2hpZnRLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmFsdEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQubWV0YUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmZvY3VzTmV4dEFjdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgISRldmVudC50eXBlLmluZGV4T2YoXCJrZXlcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKCRldmVudC5rZXlDb2RlLCBcInRhYlwiLCA5LCAkZXZlbnQua2V5LCBcIlRhYlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC5jdHJsS2V5IHx8ICRldmVudC5hbHRLZXkgfHwgJGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZm9jdXNQcmV2aW91c0FjdGlvbigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgISRldmVudC50eXBlLmluZGV4T2YoXCJrZXlcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5rZXlDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicGFnZS11cFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnNoaWZ0S2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5hbHRLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50Lm1ldGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5mb2N1c0ZpcnN0QWN0aW9uKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAhJGV2ZW50LnR5cGUuaW5kZXhPZihcImtleVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmtleUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwYWdlLWRvd25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5jdHJsS2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zaGlmdEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5tZXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uZm9jdXNMYXN0QWN0aW9uKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAhJGV2ZW50LnR5cGUuaW5kZXhPZihcImtleVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX2soJGV2ZW50LmtleUNvZGUsIFwiZXNjXCIsIDI3LCAkZXZlbnQua2V5LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFc2NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVzY2FwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnNoaWZ0S2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5hbHRLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50Lm1ldGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uY2xvc2VNZW51KCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIG1vdXNlbW92ZTogX3ZtLm9uTW91c2VGb2N1c0FjdGlvblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwidWxcIixcbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBpZDogX3ZtLnJhbmRvbUlkLCB0YWJpbmRleDogXCItMVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgW192bS5vcGVuZWQgPyBbX3ZtLl90KFwiZGVmYXVsdFwiKV0gOiBfdm0uX2UoKV0sXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiYnV0dG9uXCIsIHtcbiAgICBzdGF0aWNDbGFzczogXCJpY29uLWNvbGxhcHNlXCIsXG4gICAgY2xhc3M6IHsgXCJpY29uLWNvbGxhcHNlLS1yb3RhdGVkXCI6IF92bS5vcGVuIH0sXG4gICAgb246IHsgY2xpY2s6IF92bS5vbkNsaWNrIH1cbiAgfSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfb2JqXG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwibmF2LWVsZW1lbnRcIixcbiAgICBfdm0uX2IoXG4gICAgICB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5XCIsXG4gICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgXCJhcHAtbmF2aWdhdGlvbi1lbnRyeS0tbm8taWNvblwiOiAhX3ZtLmlzSWNvblNob3duLFxuICAgICAgICAgIFwiYXBwLW5hdmlnYXRpb24tZW50cnktLW9wZW5lZFwiOiBfdm0ub3BlbmVkLFxuICAgICAgICAgIFwiYXBwLW5hdmlnYXRpb24tZW50cnktLXBpbm5lZFwiOiBfdm0ucGlubmVkLFxuICAgICAgICAgIFwiYXBwLW5hdmlnYXRpb24tZW50cnktLWVkaXRpbmdcIjogX3ZtLmVkaXRpbmdBY3RpdmUsXG4gICAgICAgICAgXCJhcHAtbmF2aWdhdGlvbi1lbnRyeS0tZGVsZXRlZFwiOiBfdm0udW5kbyxcbiAgICAgICAgICBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5LS1jb2xsYXBzaWJsZVwiOiBfdm0uY29sbGFwc2libGUsXG4gICAgICAgICAgYWN0aXZlOiBfdm0uaXNBY3RpdmVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwibmF2LWVsZW1lbnRcIixcbiAgICAgIF92bS5uYXZFbGVtZW50LFxuICAgICAgZmFsc2VcbiAgICApLFxuICAgIFtcbiAgICAgICFfdm0udW5kb1xuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5LWxpbmtcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHsgaHJlZjogXCIjXCIgfSxcbiAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5vbkNsaWNrIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXBwLW5hdmlnYXRpb24tZW50cnktaWNvblwiLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICgoX29iaiA9IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcgfSksXG4gICAgICAgICAgICAgICAgICAgIChfb2JqW192bS5pY29uXSA9IF92bS5pY29uICYmIF92bS5pc0ljb25TaG93biksXG4gICAgICAgICAgICAgICAgICAgIF9vYmopXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbIV92bS5sb2FkaW5nID8gX3ZtLl90KFwiaWNvblwiKSA6IF92bS5fZSgpXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICFfdm0uZWRpdGluZ0FjdGl2ZVxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXBwLW5hdmlnYXRpb24tZW50cnlfX3RpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgdGl0bGU6IF92bS50aXRsZSB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCJcXG5cXHRcXHRcXHRcIiArIF92bS5fcyhfdm0udGl0bGUpICsgXCJcXG5cXHRcXHRcIildXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX3ZtLmVkaXRpbmdBY3RpdmVcbiAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImVkaXRpbmdDb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJJbnB1dENvbmZpcm1DYW5jZWxcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBcImVkaXRpbmdJbnB1dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRQbGFjZWhvbGRlciAhPT0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdm0uZWRpdFBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbDogX3ZtLmNhbmNlbEVkaXRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm06IF92bS5oYW5kbGVFZGl0aW5nRG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uZWRpdGluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRpbmdWYWx1ZSA9ICQkdlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImVkaXRpbmdWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLmNvbGxhcHNpYmxlXG4gICAgICAgID8gX2MoXCJBcHBOYXZpZ2F0aW9uSWNvbkNvbGxhcHNpYmxlXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IG9wZW46IF92bS5vcGVuZWQgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgIHJldHVybiBfdm0udG9nZ2xlQ29sbGFwc2UoJGV2ZW50KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0udW5kb1xuICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYXBwLW5hdmlnYXRpb24tZW50cnlfX2RlbGV0ZWRcIiB9LCBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9fZGVsZXRlZC1kZXNjcmlwdGlvblwiIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJcXG5cXHRcXHRcXHRcIiArIF92bS5fcyhfdm0udGl0bGUpICsgXCJcXG5cXHRcXHRcIildXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uaGFzVXRpbHNcbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5X191dGlsc1wiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF92bS4kc2xvdHMuY291bnRlclxuICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiYXBwLW5hdmlnYXRpb24tZW50cnlfX2NvdW50ZXItd3JhcHBlclwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFtfdm0uX3QoXCJjb3VudGVyXCIpXSxcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiQWN0aW9uc1wiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwibWVudS1hbGlnblwiOiBcInJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogX3ZtLm1lbnVQbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIG9wZW46IF92bS5tZW51T3BlbixcbiAgICAgICAgICAgICAgICAgICAgXCJmb3JjZS1tZW51XCI6IF92bS5mb3JjZU1lbnUsXG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdC1pY29uXCI6IF92bS5tZW51SWNvblxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7IFwidXBkYXRlOm9wZW5cIjogX3ZtLm9uTWVudVRvZ2dsZSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0uZWRpdGFibGUgJiYgIV92bS5lZGl0aW5nQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkFjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpY29uOiBcImljb24tcmVuYW1lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5oYW5kbGVFZGl0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcblxcdFxcdFxcdFxcdFwiICsgX3ZtLl9zKF92bS5lZGl0TGFiZWwpICsgXCJcXG5cXHRcXHRcXHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS51bmRvXG4gICAgICAgICAgICAgICAgICAgID8gX2MoXCJBY3Rpb25CdXR0b25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5X19kZWxldGVkLWJ1dHRvbiBpY29uLWhpc3RvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0uaGFuZGxlVW5kbyB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX3QoXCJhY3Rpb25zXCIpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5jYW5IYXZlQ2hpbGRyZW4gJiYgX3ZtLmhhc0NoaWxkcmVuXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcInVsXCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImFwcC1uYXZpZ2F0aW9uLWVudHJ5X19jaGlsZHJlblwiIH0sXG4gICAgICAgICAgICBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fdChcImV4dHJhXCIpXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgeyBzdGF0aWNDbGFzczogXCJhcHAtbmF2aWdhdGlvbi1lbnRyeV9faW5saW5lLWlucHV0LWNvbnRhaW5lclwiIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIHJldHVybiBfdm0uY29uZmlybSgkZXZlbnQpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhJGV2ZW50LnR5cGUuaW5kZXhPZihcImtleVwiKSAmJlxuICAgICAgICAgICAgICAgIF92bS5faygkZXZlbnQua2V5Q29kZSwgXCJlc2NcIiwgMjcsICRldmVudC5rZXksIFtcIkVzY1wiLCBcIkVzY2FwZVwiXSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgJGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAkZXZlbnQuc2hpZnRLZXkgfHxcbiAgICAgICAgICAgICAgICAkZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgICAgICAgICAgJGV2ZW50Lm1ldGFLZXlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICByZXR1cm4gX3ZtLmNhbmNlbCgkZXZlbnQpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZhbHVlTW9kZWwsXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2YWx1ZU1vZGVsXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlZjogXCJpbnB1dFwiLFxuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXBwLW5hdmlnYXRpb24tZW50cnlfX2lubGluZS1pbnB1dFwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJ0ZXh0XCIsIHBsYWNlaG9sZGVyOiBfdm0ucGxhY2Vob2xkZXIgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udmFsdWVNb2RlbCB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF92bS52YWx1ZU1vZGVsID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpY29uLWNvbmZpcm1cIixcbiAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwic3VibWl0XCIgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgIHJldHVybiBfdm0uY29uZmlybSgkZXZlbnQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY2xvc2VcIixcbiAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwicmVzZXRcIiB9LFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIF92bS5jYW5jZWwoJGV2ZW50KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJWUG9wb3ZlclwiLFxuICAgIF92bS5fZyhcbiAgICAgIF92bS5fYihcbiAgICAgICAge1xuICAgICAgICAgIHJlZjogXCJwb3BvdmVyXCIsXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIFwicG9wb3Zlci1iYXNlLWNsYXNzXCI6IFwicG9wb3ZlclwiLFxuICAgICAgICAgICAgXCJwb3BvdmVyLXdyYXBwZXItY2xhc3NcIjogXCJwb3BvdmVyX193cmFwcGVyXCIsXG4gICAgICAgICAgICBcInBvcG92ZXItYXJyb3ctY2xhc3NcIjogXCJwb3BvdmVyX19hcnJvd1wiLFxuICAgICAgICAgICAgXCJwb3BvdmVyLWlubmVyLWNsYXNzXCI6IFwicG9wb3Zlcl9faW5uZXJcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJWUG9wb3ZlclwiLFxuICAgICAgICBfdm0uJGF0dHJzLFxuICAgICAgICBmYWxzZVxuICAgICAgKSxcbiAgICAgIF92bS4kbGlzdGVuZXJzXG4gICAgKSxcbiAgICBbXG4gICAgICBfdm0uX3QoXCJ0cmlnZ2VyXCIpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwidGVtcGxhdGVcIiwgeyBzbG90OiBcInBvcG92ZXJcIiB9LCBbX3ZtLl90KFwiZGVmYXVsdFwiKV0sIDIpXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKG9wdGlvbnMuZnVuY3Rpb25hbCA/IHRoaXMucGFyZW50IDogdGhpcykuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdFxuICAgICAgICApXG4gICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BY3Rpb25CdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJlOTI5YjRmJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGlvbkJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGlvbkJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQWN0aW9uQnV0dG9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTJlOTI5YjRmJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMmU5MjliNGZcIixcbiAgbnVsbFxuICBcbilcblxuLyogY3VzdG9tIGJsb2NrcyAqL1xuaW1wb3J0IGJsb2NrMCBmcm9tIFwiLi9BY3Rpb25CdXR0b24udnVlP3Z1ZSZ0eXBlPWN1c3RvbSZpbmRleD0wJmJsb2NrVHlwZT1kb2NzXCJcbmlmICh0eXBlb2YgYmxvY2swID09PSAnZnVuY3Rpb24nKSBibG9jazAoY29tcG9uZW50KVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyZTkyOWI0ZicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyZTkyOWI0ZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyZTkyOWI0ZicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aW9uQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZTkyOWI0ZiZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCcyZTkyOWI0ZicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL2NvbXBvbmVudHMvQWN0aW9uQnV0dG9uL0FjdGlvbkJ1dHRvbi52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWN0aW9uQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FjdGlvbkJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BY3Rpb25CdXR0b24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MmU5MjliNGYmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FjdGlvbkJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmU5MjliNGYmc2NvcGVkPXRydWUmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRmNDU4NjRiJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9BY3Rpb25zLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmNDU4NjRiJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiNGY0NTg2NGJcIixcbiAgbnVsbFxuICBcbilcblxuLyogY3VzdG9tIGJsb2NrcyAqL1xuaW1wb3J0IGJsb2NrMCBmcm9tIFwiLi9BY3Rpb25zLnZ1ZT92dWUmdHlwZT1jdXN0b20maW5kZXg9MCZibG9ja1R5cGU9ZG9jc1wiXG5pZiAodHlwZW9mIGJsb2NrMCA9PT0gJ2Z1bmN0aW9uJykgYmxvY2swKGNvbXBvbmVudClcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9sb3Vpcy93b3Jrc3BhY2UvbmV4dGNsb3VkL3Rvb2xzL25leHRjbG91ZC12dWUvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNGY0NTg2NGInKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNGY0NTg2NGInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNGY0NTg2NGInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRmNDU4NjRiJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzRmNDU4NjRiJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9BY3Rpb25zL0FjdGlvbnMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FjdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BY3Rpb25zLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmNDU4NjRiJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BY3Rpb25zLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZjQ1ODY0YiZzY29wZWQ9dHJ1ZSZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2M0YWNmYjMmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9M2M0YWNmYjMmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIzYzRhY2ZiM1wiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCczYzRhY2ZiMycpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCczYzRhY2ZiMycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCczYzRhY2ZiMycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2M0YWNmYjMmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignM2M0YWNmYjMnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9jb21wb25lbnRzL0FwcE5hdmlnYXRpb25JdGVtL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25JY29uQ29sbGFwc2libGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkljb25Db2xsYXBzaWJsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHBOYXZpZ2F0aW9uSWNvbkNvbGxhcHNpYmxlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTNjNGFjZmIzJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHBOYXZpZ2F0aW9uSWNvbkNvbGxhcHNpYmxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYzRhY2ZiMyZzY29wZWQ9dHJ1ZSZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIxMGRmZWExJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGN1c3RvbSBibG9ja3MgKi9cbmltcG9ydCBibG9jazAgZnJvbSBcIi4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPWN1c3RvbSZpbmRleD0wJmJsb2NrVHlwZT1kb2NzXCJcbmlmICh0eXBlb2YgYmxvY2swID09PSAnZnVuY3Rpb24nKSBibG9jazAoY29tcG9uZW50KVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi9ob21lL2xvdWlzL3dvcmtzcGFjZS9uZXh0Y2xvdWQvdG9vbHMvbmV4dGNsb3VkLXZ1ZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyMTBkZmVhMScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyMTBkZmVhMScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyMTBkZmVhMScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIxMGRmZWExJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzIxMGRmZWExJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9BcHBOYXZpZ2F0aW9uSXRlbS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwTmF2aWdhdGlvbkl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcE5hdmlnYXRpb25JdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMTBkZmVhMSZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vSW5wdXRDb25maXJtQ2FuY2VsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xODUzMDdiMiZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbnB1dENvbmZpcm1DYW5jZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9JbnB1dENvbmZpcm1DYW5jZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0lucHV0Q29uZmlybUNhbmNlbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBjdXN0b20gYmxvY2tzICovXG5pbXBvcnQgYmxvY2swIGZyb20gXCIuL0lucHV0Q29uZmlybUNhbmNlbC52dWU/dnVlJnR5cGU9Y3VzdG9tJmluZGV4PTAmYmxvY2tUeXBlPWRvY3NcIlxuaWYgKHR5cGVvZiBibG9jazAgPT09ICdmdW5jdGlvbicpIGJsb2NrMChjb21wb25lbnQpXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL2hvbWUvbG91aXMvd29ya3NwYWNlL25leHRjbG91ZC90b29scy9uZXh0Y2xvdWQtdnVlL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzE4NTMwN2IyJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzE4NTMwN2IyJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzE4NTMwN2IyJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbnB1dENvbmZpcm1DYW5jZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4NTMwN2IyJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzE4NTMwN2IyJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9BcHBOYXZpZ2F0aW9uSXRlbS9JbnB1dENvbmZpcm1DYW5jZWwudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0lucHV0Q29uZmlybUNhbmNlbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9JbnB1dENvbmZpcm1DYW5jZWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vSW5wdXRDb25maXJtQ2FuY2VsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9JbnB1dENvbmZpcm1DYW5jZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4NTMwN2IyJlwiIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOCBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5pbXBvcnQgQXBwTmF2aWdhdGlvbkl0ZW0gZnJvbSAnLi9BcHBOYXZpZ2F0aW9uSXRlbSdcblxuZXhwb3J0IGRlZmF1bHQgQXBwTmF2aWdhdGlvbkl0ZW1cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vUG9wb3Zlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDUwOTNjY2EmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9wb3Zlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogY3VzdG9tIGJsb2NrcyAqL1xuaW1wb3J0IGJsb2NrMCBmcm9tIFwiLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT1jdXN0b20maW5kZXg9MCZibG9ja1R5cGU9ZG9jc1wiXG5pZiAodHlwZW9mIGJsb2NrMCA9PT0gJ2Z1bmN0aW9uJykgYmxvY2swKGNvbXBvbmVudClcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9sb3Vpcy93b3Jrc3BhY2UvbmV4dGNsb3VkL3Rvb2xzL25leHRjbG91ZC12dWUvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNDUwOTNjY2EnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNDUwOTNjY2EnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNDUwOTNjY2EnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1MDkzY2NhJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzQ1MDkzY2NhJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9Qb3BvdmVyL1BvcG92ZXIudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BvcG92ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUG9wb3Zlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qb3BvdmVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTA5M2NjYSZcIiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgTWFyY28gQW1icm9zaW5pIDxtYXJjb2FtYnJvc2luaUBwbS5tZT5cbiAqXG4gKiBAYXV0aG9yIE1hcmNvIEFtYnJvc2luaSA8bWFyY29hbWJyb3NpbmlAcG0ubWU+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKlxuICovXG5cbmltcG9ydCBQb3BvdmVyIGZyb20gJy4vUG9wb3ZlcidcblxuZXhwb3J0IGRlZmF1bHQgUG9wb3ZlclxuIiwiLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKdWxpdXMgSMOkcnRsIDxqdXNAYml0Z3JpZC5uZXQ+XG4gKlxuICogQGF1dGhvciBKdWxpdXMgSMOkcnRsIDxqdXNAYml0Z3JpZC5uZXQ+XG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cbmltcG9ydCB7IFZUb29sdGlwIH0gZnJvbSAndi10b29sdGlwJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbi8vIGZvcmNlIHNjb3BlIHRoZSB0b29sdGlwIGFuZCB1c2UgLnZ1ZS10b29sdGlwXG4vLyBpbnN0ZWFkIG9mIC50b29sdGlwIHRvIGF2b2lkIHNlcnZlciBjb21wYXRpYmlsaXR5XG4vLyBpc3N1ZXMgYW5kIHRoZSB1c2Ugb2YgIWltcG9ydGFudFxuVlRvb2x0aXAub3B0aW9ucy5kZWZhdWx0VGVtcGxhdGUgPSBgPGRpdiBjbGFzcz1cInZ1ZS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIiBkYXRhLXYtJHtTQ09QRV9WRVJTSU9OfT48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+YFxuVlRvb2x0aXAub3B0aW9ucy5kZWZhdWx0SHRtbCA9IGZhbHNlXG5cbmV4cG9ydCBkZWZhdWx0IFZUb29sdGlwXG4iLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi9pbmRleC5zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0O2Jhc2U2NCxyZzhBQU9RT0FBQUJBQUlBQUFBQUFBSUFCUU1BQUFBQUFBQUJRSkFCQUFBQUFFeFFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQU8venNQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBQUdrQVl3QnZBRzRBWmdCdkFHNEFkQUF0QUhZQWRRQmxBQzBBT0FBMEFHTUFOQUEyQURFQVpnQUFBQUFBQUJZQUFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeEFDNEFNQUFBS0FBQWFRQmpBRzhBYmdCbUFHOEFiZ0IwQUMwQWRnQjFBR1VBTFFBNEFEUUFZd0EwQURZQU1RQm1BQUFBQUFBQkFBQUFDZ0NBQUFNQUlFOVRMekowNDQvUkFBQUFyQUFBQUdCamJXRndBQTNydUFBQUFRd0FBQUZDWjJ4NVpzZEhPVXdBQUFKUUFBQUgvR2hsWVdRcjZ4ZjNBQUFLVEFBQUFEWm9hR1ZoSnYwVGhRQUFDb1FBQUFBa2FHMTBlR2UrLy84QUFBcW9BQUFBTkd4dlkyRU52QTltQUFBSzNBQUFBQ2h0WVhod0FTQUFWd0FBQ3dRQUFBQWdibUZ0WlczRStWUUFBQXNrQUFBQ3BuQnZjM1EvVkw3WEFBQU56QUFBQVJZQUJCTEtBWkFBQlFBQURHVU5yQUFBQXJ3TVpRMnNBQUFKWUFEMUJRb0FBQUlBQlFNQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFVR1pGWkFCQTZnSHFFaE9JQUFBQndoT0lBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBREFBQUFBd0FBQUJ3QUFRQUFBQUFBUEFBREFBRUFBQUFjQUFRQUlBQUFBQVFBQkFBQkFBRHFFdi8vQUFEcUFmLy9GZ0FBQVFBQUFBQUFBQUVHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQU9wZzlEQUFVQUN3QUFDUUlSQ1FRUkNRRU9wdnFDQlg3N3VnUkcrb0w2Z2dWKys3b0VSZzlDK29MNmdnRTRCRVlFUmdFNCtvTDZnZ0U0QkVZRVJnQUJBQUFBQUExdUVsQUFCUUFBQ1FFUkNRRVJCaHNIVS9kMENJd0p4UGl0L3NnSWl3aU0vc2NBQWdBQUFBQVAzdzlEQUFVQUN3QUFDUUlSQ1FRUkNRRUU0Z1YrK29JRVJ2dTZCWDRGZi9xQkJFYjd1Z1JHQlg0RmZ2N0krN3I3dXY3SUJYNEZmdjdJKzdyN3VnQUJBQUFBQUE2bUVsQUFCUUFBQ1FFUkNRRVJEVzc0clFpTDkzVUp4QWRUQVRuM2RQZDFBVGdBQVFBQUFBQUdOeE9JQUFVQUFCTUhDUUVYQVpTVUJYTDZqcFFGb3hPSVZmYVI5cEZWQ2NRQUFBRUFBQUFBRVljUGd3QUZBQUFKQlEvTjkvUDcrLzVHQmI4Snh3K0Q5L01FQmY1SCtrRUp4Z0FCQUFBQUFCRVhFUmNBQ3dBQUNRc1JGLzN0K3NENndQM3RCVUQ2d0FJVEJVQUZRQUlUK3NBRWhQM3RCVUQ2d0FJVEJVQUZRQUlUK3NBRlFQM3Qrc0FBQWYvL0FBQVRreExzQURNQUFBRWlCdzRCRnhZWEFTRW1Cd1lIQmdjR0ZCY1dGeFlYRmpjaEFRWUhCaGNXRng0QkZ4WVhGamMyTndFMk56WW5KaWNCTGdFS1lHVlBTa1lRRWtnRjEvSGdUVDQ2S1NjVUZCUVVKeWs2UGswT0lQb3BOeG9ZQXdNYkdWWTFOenMrT2o4MUIrMDdGUlVVRlR6NEV5eDBFdXc1Tkt4WllFZjZLZ0ViR0M0c09UaDRPRGtzTGhnYkF2b3BOVDg3UGpvM05sWVpHZ01ER0JrNEIrdzhVVkJQVWp3SDdDMHlBQUFBQWdBQUFBQU9waEpRQUJnQVJnQUFBU0lIRGdFSEJoUVhIZ0VYRmpJM1BnRTNOalFuTGdFbkpnRWlCd1lIQmhRWEZoY1dNeUVSSVNJSEJnY0dGQmNXRnhZM0lUSTNOamMyTkNjbUp5WWpJUkUwSnlZbkppTUpkbTltWXBncEt5c3BtR0ptM21aaWx5b3JLeXFYWW1iOE5sWklSeWtyS3lsSFNGWUNjZjJQVmtoSEtTc3JLVWRJVmdkVFZVaEhLU3NyS1VkSVZmMlBLeWxIU1ZVU1VDc3FsMk5sMzJWaW1Da3JLeW1ZWW1YZlpXT1hLaXY1NVNzcFIwaXJTRWNwSy9ubUt5bEhTYXBKUnlrckFTb3BSMG1xU1VjcEt3ZFRWVWhIS1NzQUFBTUFBQUFBRVJjUkZ3QURBQWNBQ3dBQUFSRWhFUUVSSVJFQkVTRVJBbkVPcHZGYURxYnhXZzZtRVJmOWp3SngrZWI5andKeCtlWDlqd0p4QUFNQUFBQUFFcDRMNXdBWUFERUFTZ0FBQVRJWEhnRVhGaFFIRGdFSEJpSW5MZ0VuSmpRM1BnRTNOaUV5Rng0QkZ4WVVCdzRCQndZaUp5NEJKeVkwTno0Qk56WWhNaGNlQVJjV0ZBY09BUWNHSWljdUFTY21ORGMrQVRjMkF3MXdaV0tZS1NzcktaaGlaZDltWXBjcUt5c3FsMkptQnladlptS1hLaXNyS3BkaVp0NW1ZcGNxS3lzcWwySm1CeVp2Wm1LWEtpc3JLcGRpWnQ5bFlwZ3BLeXNwbUdKbEMrY3JLcGRpWnQ1bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltYmVabUtYS2lzcktwZGladDVtWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1iZVptS1hLaXNBQUFBQUFnQUFBQUFQM3cvZkFBTUFCd0FBQVJFaEVTRVJJUkVEcWdUaUFuRUU0Zy9mODhzTU5mUExERFVBQUFBQkFBQUFBQkVYRVJjQUFnQUFDUUlDY1E2bThWb1JGL2l0K0swQUFRQUFBQUFPcGd3MUFBSUFBQWtDQk9JRTRnVGlERFg3SGdUZ0FBSC80QUFBRTJrVGFRQXhBQUFCQkFVRUJRUURBZ01DRVJBVEVoTVNCUVFGQkNFZ0pTUWxKQk1TRXhJVEJnQUZCQ0VnSlNRbkppY21Bd0lSRUJNU0FBaHMvcGorc2Y2Ni91Mys3c2JLYTI2QWUrbmxBVGtCUEFGeUFYNEJsZ0Z4QVdFQlZnRXVBU3JyN0ptY09MeitLZjc1L3ZQKzZ2NisvczcrMmYzN3VMdGpaMUJPQVNjVGFTNlhrK25uL3RmKzAvNnIvcC8rai81cS9vTCtqdjdFL3NmbDZIeUFhMmpGd2dFTkFRNEJRd0ZMQVduTS90cE9VR2RqdTdqNy9RRW5BVElCUWdFbEFSTUJEUUhMQUFJQUFBQUFFNGdUaUFBa0FFQUFBQUVnQlFRRkJBTUNBd0lRRXhJVEVnVUVCUVFnSlNRbEpCTVNFeElRQXdJREFpVWtKU1FCSVRJWEhnRVhGaFFIRGdFSEJpTWhJaWN1QVNjbU5EYytBVGMyQ2NUK2F2NkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUFnSHpvNWY3SC9zVCtqdjZDK3NFSFUxdFhWSVFrSmlZa2hGUlhXL2l0WEZkVWhDUW1KaVNFVkZjVGlJQjg2T1greC83RS9vNytndnpVL29MK2p2N0Uvc2ZsNkh5QWdIem81UUU1QVR3QmNnRitBeXdCZmdGeUFUd0JPZVhvZklENEVTWWxoRk5YdUZkVGhDVW1KaVdFVTFlNFYxT0VKU1lBQUFBQ0FBQUFBQk9JRTRnQUpBQTlBQUFCSUFVRUJRUURBZ01DRUJNU0V4SUZCQVVFSUNVa0pTUVRFaE1TRUFNQ0F3SWxKQ1VrQVNBRkJBQVRFaEFEQWdBRkJDQWxKQUFEQWhBVEVnQWxKQW5FL21yK2d2Nk8vc1QreCtYb2ZJQ0FmT2psQVRrQlBBRnlBWDRETEFGK0FYSUJQQUU1NWVoOGdJQjg2T1greC83RS9vNytndjVxQVRjQkZ3RVBBWnR3ZEhSdy9tWCs4ZjdwL1pMKzZmN3gvbVZ3ZEhSd0Fac0JEd0VYRTRpQWZPamwvc2YreFA2Ty9vTDgxUDZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBL0JoMGNQNWwvdkgrNmYyUy91bis4ZjVsY0hSMGNBR2JBUThCRndKdUFSY0JEd0diY0hRQUFBQUNBQUFBQUJPSUU0Z0FBd0FvQUFBQklSRWhBU0FGQkFVRUF3SURBaEFURWhNU0JRUUZCQ0FsSkNVa0V4SVRFaEFEQWdNQ0pTUWxKQVhjQjlENE1BUG8vbXIrZ3Y2Ty9zVCt4K1hvZklDQWZPamxBVGtCUEFGeUFYNERMQUYrQVhJQlBBRTU1ZWg4Z0lCODZPWCt4LzdFL283K2dnWGNCOUFGM0lCODZPWCt4LzdFL283K2d2elUvb0wranY3RS9zZmw2SHlBZ0h6bzVRRTVBVHdCY2dGK0F5d0JmZ0Z5QVR3Qk9lWG9mSUFBQUFFQUFBQUJBQUEvN1B3N1h3ODg5UUFMRTRnQUFBQUEzTlZIOVFBQUFBRGNoR3YxLytBQUFCT1RFNGdBQUFBSUFBSUFBQUFBQUFBQUFRQUFFNGdBQUFBQUU0ai80UC8xRTVNQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUFBQUFFNGdBQUJPSUFBQVRpQUFBRTRnQUFBWTJBQUFUaUFBQUFBRC8vd0FBQUFBQUFBQUFBQUFBQVAvZ0FBQUFBQUFBQUFBQUFBQWlBRFlBV0FCc0FJQUFsQUMwQVE0QmZBR2FBaEFDSmdJMEFrSUNxQU1pQTZZRC9nQUJBQUFBRXdCTEFBTUFBQUFBQUFJQUFBQUtBQW9BQUFEL0FBQUFBQUFBQUFBQUVBREdBQUVBQUFBQUFBRUFGQUFBQUFFQUFBQUFBQUlBQndBVUFBRUFBQUFBQUFNQUZBQWJBQUVBQUFBQUFBUUFGQUF2QUFFQUFBQUFBQVVBQ3dCREFBRUFBQUFBQUFZQUZBQk9BQUVBQUFBQUFBb0FLd0JpQUFFQUFBQUFBQXNBRXdDTkFBTUFBUVFKQUFFQUtBQ2dBQU1BQVFRSkFBSUFEZ0RJQUFNQUFRUUpBQU1BS0FEV0FBTUFBUVFKQUFRQUtBRCtBQU1BQVFRSkFBVUFGZ0VtQUFNQUFRUUpBQVlBS0FFOEFBTUFBUVFKQUFvQVZnRmtBQU1BQVFRSkFBc0FKZ0c2YVdOdmJtWnZiblF0ZG5WbExUZzBZelEyTVdaU1pXZDFiR0Z5YVdOdmJtWnZiblF0ZG5WbExUZzBZelEyTVdacFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFpsWmxjbk5wYjI0Z01TNHdhV052Ym1admJuUXRkblZsTFRnMFl6UTJNV1pIWlc1bGNtRjBaV1FnWW5rZ2MzWm5NblIwWmlCbWNtOXRJRVp2Ym5SbGJHeHZJSEJ5YjJwbFkzUXVhSFIwY0RvdkwyWnZiblJsYkd4dkxtTnZiUUJwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQVVnQmxBR2NBZFFCc0FHRUFjZ0JwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQWFRQmpBRzhBYmdCbUFHOEFiZ0IwQUMwQWRnQjFBR1VBTFFBNEFEUUFZd0EwQURZQU1RQm1BRllBWlFCeUFITUFhUUJ2QUc0QUlBQXhBQzRBTUFCcEFHTUFid0J1QUdZQWJ3QnVBSFFBTFFCMkFIVUFaUUF0QURnQU5BQmpBRFFBTmdBeEFHWUFSd0JsQUc0QVpRQnlBR0VBZEFCbEFHUUFJQUJpQUhrQUlBQnpBSFlBWndBeUFIUUFkQUJtQUNBQVpnQnlBRzhBYlFBZ0FFWUFid0J1QUhRQVpRQnNBR3dBYndBZ0FIQUFjZ0J2QUdvQVpRQmpBSFFBTGdCb0FIUUFkQUJ3QURvQUx3QXZBR1lBYndCdUFIUUFaUUJzQUd3QWJ3QXVBR01BYndCdEFBQUFBZ0FBQUFBQUFBQXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRXdBVEFBQUJBZ0VEQVFRQkJRRUdBUWNCQ0FFSkFRb0JDd0VNQVEwQkRnRVBBUkFCRVFFU0FSTVJZWEp5YjNjdGJHVm1kQzFrYjNWaWJHVUtZWEp5YjNjdGJHVm1kQkpoY25KdmR5MXlhV2RvZEMxa2IzVmliR1VMWVhKeWIzY3RjbWxuYUhRS1luSmxZV1JqY25WdFlnbGphR1ZqYTIxaGNtc0ZZMnh2YzJVSFkyOXVabWx5YlFScGJtWnZCRzFsYm5VRWJXOXlaUVZ3WVhWelpRUndiR0Y1Q25SeWFXRnVaMnhsTFhNUWRYTmxjaTF6ZEdGMGRYTXRZWGRoZVE5MWMyVnlMWE4wWVhSMWN5MWtibVFWZFhObGNpMXpkR0YwZFhNdGFXNTJhWE5wWW14bEVuVnpaWEl0YzNSaGRIVnpMVzl1YkdsdVpRQUFcIiIsImV4cG9ydCBkZWZhdWx0IFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJ6ZEdGdVpHRnNiMjVsUFNKdWJ5SS9QandoUkU5RFZGbFFSU0J6ZG1jZ1VGVkNURWxESUNJdEx5OVhNME12TDBSVVJDQlRWa2NnTVM0eEx5OUZUaUlnSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDBkeVlYQm9hV056TDFOV1J5OHhMakV2UkZSRUwzTjJaekV4TG1SMFpDSWdQanh6ZG1jZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0OGJXVjBZV1JoZEdFK1BDOXRaWFJoWkdGMFlUNDhaR1ZtY3o0OFptOXVkQ0JwWkQwaWFXTnZibVp2Ym5RdGRuVmxMVGcwWXpRMk1XWWlJR2h2Y21sNkxXRmtkaTE0UFNJMU1EQXdJajQ4Wm05dWRDMW1ZV05sSUdadmJuUXRabUZ0YVd4NVBTSnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhaaUlnWm05dWRDMTNaV2xuYUhROUlqUXdNQ0lnWm05dWRDMXpkSEpsZEdOb1BTSnViM0p0WVd3aUlIVnVhWFJ6TFhCbGNpMWxiVDBpTlRBd01DSWdjR0Z1YjNObExURTlJaklnTUNBMUlETWdNQ0F3SURBZ01DQXdJREFpSUdGelkyVnVkRDBpTlRBd01DSWdaR1Z6WTJWdWREMGlNQ0lnZUMxb1pXbG5hSFE5SWpBaUlHSmliM2c5SWkwek1pQXdJRFV3TVRFZ05UQXdNQ0lnZFc1a1pYSnNhVzVsTFhSb2FXTnJibVZ6Y3owaU1DSWdkVzVrWlhKc2FXNWxMWEJ2YzJsMGFXOXVQU0kxTUNJZ2RXNXBZMjlrWlMxeVlXNW5aVDBpVlN0bFlUQXhMV1ZoTVRJaUlDOCtQRzFwYzNOcGJtY3RaMng1Y0dnZ2FHOXlhWG90WVdSMkxYZzlJakFpSUNBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSmhjbkp2ZHkxc1pXWjBMV1J2ZFdKc1pTSWdkVzVwWTI5a1pUMGlKaU40WldFd01Uc2lJR1E5SWswek56VXdJRE01TURZZ2JDMHhOREEySUMweE5EQTJJR3d4TkRBMklDMHhOREEySUd3d0lETXhNaUJzTFRFd09UUWdNVEE1TkNCc01UQTVOQ0F4TURrMElHd3dJRE14TWlCYVRUSXpORFFnTXprd05pQnNMVEUwTURZZ0xURTBNRFlnYkRFME1EWWdMVEUwTURZZ2JEQWdNekV5SUd3dE1UQTVOQ0F4TURrMElHd3hNRGswSURFd09UUWdiREFnTXpFeUlGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW1GeWNtOTNMV3hsWm5RaUlIVnVhV052WkdVOUlpWWplR1ZoTURJN0lpQmtQU0pOTVRVMk15QXlOVEF3SUd3eE9EYzFJQzB4T0RjMUlHd3dJQzB6TVRJZ2JDMHlNVGc0SURJeE9EY2diREl4T0RnZ01qRTRPQ0JzTUNBdE16RXpJR3d0TVRnM05TQXRNVGczTlNCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0poY25KdmR5MXlhV2RvZEMxa2IzVmliR1VpSUhWdWFXTnZaR1U5SWlZamVHVmhNRE03SWlCa1BTSk5NVEkxTUNBeE1EazBJR3d4TkRBMklERTBNRFlnYkMweE5EQTJJREUwTURZZ2JEQWdMVE14TWlCc01UQTVOQ0F0TVRBNU5DQnNMVEV3T1RRZ0xURXdPVFFnYkRBZ0xUTXhNaUJhVFRJMk5UWWdNVEE1TkNCc01UUXdOeUF4TkRBMklHd3RNVFF3TnlBeE5EQTJJR3d3SUMwek1USWdiREV3T1RRZ0xURXdPVFFnYkMweE1EazBJQzB4TURrMElHd3dJQzB6TVRJZ1dpSWdMejQ4WjJ4NWNHZ2daMng1Y0dndGJtRnRaVDBpWVhKeWIzY3RjbWxuYUhRaUlIVnVhV052WkdVOUlpWWplR1ZoTURRN0lpQmtQU0pOTXpRek9DQXlOVEF3SUd3dE1UZzNOU0F4T0RjMUlHd3dJRE14TXlCc01qRTROeUF0TWpFNE9DQnNMVEl4T0RjZ0xUSXhPRGNnYkRBZ016RXlJR3d4T0RjMUlERTROelVnV2lJZ0x6NDhaMng1Y0dnZ1oyeDVjR2d0Ym1GdFpUMGlZbkpsWVdSamNuVnRZaUlnZFc1cFkyOWtaVDBpSmlONFpXRXdOVHNpSUdROUlrMHhORGdnTlRBd01DQnNMVEUwT0NBdE9EVWdiREV6T1RRZ0xUSTBNVFVnYkMweE16azBJQzB5TkRFMUlHd3hORGdnTFRnMUlHd3hORFF6SURJMU1EQWdiQzB4TkRReklESTFNREFnV2lJZ0x6NDhaMng1Y0dnZ1oyeDVjR2d0Ym1GdFpUMGlZMmhsWTJ0dFlYSnJJaUIxYm1samIyUmxQU0ltSTNobFlUQTJPeUlnWkQwaVRUUXdORFVnTXprM01TQnNMVEl3TmpFZ0xUSXdOakVnYkMweE1ESTVJREV3TWprZ2JDMDBORElnTFRRME1TQnNNVFEzTVNBdE1UUTNNU0JzTWpVd015QXlOVEF5SUd3dE5EUXlJRFEwTWlCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0pqYkc5elpTSWdkVzVwWTI5a1pUMGlKaU40WldFd056c2lJR1E5SWswME16YzFJREV4TlRZZ2JDMDFNekVnTFRVek1TQnNMVEV6TkRRZ01UTTBOQ0JzTFRFek5EUWdMVEV6TkRRZ2JDMDFNekVnTlRNeElHd3hNelEwSURFek5EUWdiQzB4TXpRMElERXpORFFnYkRVek1TQTFNekVnYkRFek5EUWdMVEV6TkRRZ2JERXpORFFnTVRNME5DQnNOVE14SUMwMU16RWdiQzB4TXpRMElDMHhNelEwSUd3eE16UTBJQzB4TXpRMElGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW1OdmJtWnBjbTBpSUhWdWFXTnZaR1U5SWlZamVHVmhNRGc3SWlCa1BTSk5NalkxTmlBME9EUTBJSEV0TVRBeElEQWdMVEU0TUNBdE5UY2djUzAzTkNBdE5USWdMVEV3T1NBdE1UTTRJSEV0TXpVZ0xUZzJJQzB4T1NBdE1UYzFJSEV4T0NBdE9UWWdPVEFnTFRFMk55QnNNVFE1TlNBdE1UUTVOQ0JzTFRNMk1UWWdNQ0J4TFRjM0lERWdMVEV6T1NBdE1qWWdjUzAxT0NBdE1qUWdMVGs1SUMwM01DQnhMVE01SUMwME5DQXROVGtnTFRFd01TQnhMVEl3SUMwMU5pQXRNakFnTFRFeE5pQnhNQ0F0TmpBZ01qQWdMVEV4TmlCeE1qQWdMVFUzSURVNUlDMHhNREVnY1RReElDMDBOaUE1T1NBdE56QWdjVFl5SUMweU55QXhNemtnTFRJMUlHd3pOakUySURBZ2JDMHhORGsxSUMweE5EazFJSEV0TlRVZ0xUVXpJQzA0TVNBdE1URTJJSEV0TWpRZ0xUVTVJQzB5TVNBdE1USXhJSEV6SUMwMU9DQXpNQ0F0TVRFeklIRXlOU0F0TlRRZ05qZ2dMVGszSUhFME15QXRORE1nT1RZZ0xUWTRJSEUxTlNBdE1qWWdNVEUwSUMweU9TQnhOaklnTFRNZ01USXdJREl4SUhFMk15QXlOU0F4TVRZZ09ERWdiREl3TWprZ01qQXlPQ0J4TlRrZ05qQWdPREFnTVRReElIRXlNU0E0TUNBeElERTFPU0J4TFRJeElEZ3lJQzA0TVNBeE5ESWdiQzB5TURJNUlESXdNamdnY1MwME5DQTBOU0F0TVRBeUlEY3dJSEV0TlRnZ01qVWdMVEV5TWlBeU5TQmFJaUF2UGp4bmJIbHdhQ0JuYkhsd2FDMXVZVzFsUFNKcGJtWnZJaUIxYm1samIyUmxQU0ltSTNobFlUQTVPeUlnWkQwaVRUSTBNaklnTkRZNE9DQnhMVEV4TVNBd0lDMHlNVE1nTFRReklIRXRPVGdnTFRReUlDMHhOelFnTFRFeE55NDFJSEV0TnpZZ0xUYzFMalVnTFRFeE55QXRNVGMwTGpVZ2NTMDBNeUF0TVRBeElDMDBNeUF0TWpFeUxqVWdjVEFnTFRFeE1TNDFJRFF6SUMweU1USXVOU0J4TkRFZ0xUazRJREV4TnlBdE1UYzBJSEUzTmlBdE56WWdNVGMwSUMweE1UY2djVEV3TWlBdE5ETWdNakV6SUMwME15QnhNVEV4SURBZ01qRXpJRFF6SUhFNU9DQTBNU0F4TnpNdU5TQXhNVGNnY1RjMUxqVWdOellnTVRFM0xqVWdNVGMwSUhFME15QXhNREVnTkRNZ01qRXlMalVnY1RBZ01URXhMalVnTFRReklESXhNaTQxSUhFdE5ESWdPVGtnTFRFeE55NDFJREUzTkM0MUlIRXROelV1TlNBM05TNDFJQzB4TnpNdU5TQXhNVGN1TlNCeExURXdNaUEwTXlBdE1qRXpJRFF6SUZwTk1UVTJNeUF6TVRJMUlIRXRPRFlnTUNBdE1UVTRJQzAwTXlCeExUY3hJQzAwTVNBdE1URXlJQzB4TVRJZ2NTMDBNeUF0TnpJZ0xUUXpJQzB4TlRjdU5TQnhNQ0F0T0RVdU5TQTBNeUF0TVRVM0xqVWdjVFF4SUMwM01TQXhNVElnTFRFeE1pQnhOeklnTFRReklERTFPQ0F0TkRNZ2JEWXlOU0F3SUd3d0lDMHhOVFl5SUd3dE5qSTFJREFnY1MwNE5pQXdJQzB4TlRnZ0xUUXpJSEV0TnpFZ0xUUXhJQzB4TVRJZ0xURXhNaUJ4TFRReklDMDNNeUF0TkRNZ0xURTFPQ0J4TUNBdE9EVWdORE1nTFRFMU9DQnhOREVnTFRjeElERXhNaUF0TVRFeUlIRTNNaUF0TkRNZ01UVTRJQzAwTWlCc01UZzNOU0F3SUhFNE5TQXdJREUxTnlBME1pQnhOekVnTkRFZ01URXlJREV4TWlCeE5ETWdOek1nTkRNZ01UVTRJSEV3SURnMUlDMDBNeUF4TlRnZ2NTMDBNU0EzTVNBdE1URXlJREV4TWlCeExUY3lJRFF6SUMweE5UY2dORE1nYkMwMk1qVWdNQ0JzTUNBeE9EYzFJSEV3SURnMUlDMDBNeUF4TlRjZ2NTMDBNU0EzTVNBdE1URXlJREV4TWlCeExUY3pJRFF6SUMweE5UZ2dORE1nYkMwNU16Y2dNQ0JhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSnRaVzUxSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJoT3lJZ1pEMGlUVFl5TlNBME16YzFJR3d3SUMwMk1qVWdiRE0zTlRBZ01DQnNNQ0EyTWpVZ2JDMHpOelV3SURBZ1drMDJNalVnTWpneE15QnNNQ0F0TmpJMUlHd3pOelV3SURBZ2JEQWdOakkxSUd3dE16YzFNQ0F3SUZwTk5qSTFJREV5TlRBZ2JEQWdMVFl5TlNCc016YzFNQ0F3SUd3d0lEWXlOU0JzTFRNM05UQWdNQ0JhSWlBdlBqeG5iSGx3YUNCbmJIbHdhQzF1WVcxbFBTSnRiM0psSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJpT3lJZ1pEMGlUVGM0TVNBek1EUTNJSEV4TVRJZ01DQXlNVE1nTFRReklIRTVPQ0F0TkRJZ01UYzBJQzB4TVRjdU5TQnhOellnTFRjMUxqVWdNVEUzSUMweE56TXVOU0J4TkRNZ0xURXdNaUEwTXlBdE1qRXpJSEV3SUMweE1URWdMVFF6SUMweU1UTWdjUzAwTVNBdE9UZ2dMVEV4TnlBdE1UY3pMalVnY1MwM05pQXROelV1TlNBdE1UYzBJQzB4TVRjdU5TQnhMVEV3TVNBdE5ETWdMVEl4TWk0MUlDMDBNeUJ4TFRFeE1TNDFJREFnTFRJeE15NDFJRFF6SUhFdE9UZ2dORElnTFRFM015NDFJREV4Tnk0MUlIRXROelV1TlNBM05TNDFJQzB4TVRjdU5TQXhOek11TlNCeExUUXpJREV3TWlBdE5ETWdNakV6SUhFd0lERXhNU0EwTXlBeU1UTWdjVFF5SURrNElERXhOeTQxSURFM015NDFJSEUzTlM0MUlEYzFMalVnTVRjekxqVWdNVEUzTGpVZ2NURXdNaUEwTXlBeU1UTWdORE1nV2sweU5UQXdJRE13TkRjZ2NURXhNU0F3SURJeE15QXRORE1nY1RrNElDMDBNaUF4TnpNdU5TQXRNVEUzTGpVZ2NUYzFMalVnTFRjMUxqVWdNVEUzTGpVZ0xURTNNeTQxSUhFME15QXRNVEF5SURReklDMHlNVE1nY1RBZ0xURXhNU0F0TkRNZ0xUSXhNeUJ4TFRReUlDMDVPQ0F0TVRFM0xqVWdMVEUzTXk0MUlIRXROelV1TlNBdE56VXVOU0F0TVRjekxqVWdMVEV4Tnk0MUlIRXRNVEF5SUMwME15QXRNakV6SUMwME15QnhMVEV4TVNBd0lDMHlNVE1nTkRNZ2NTMDVPQ0EwTWlBdE1UY3pMalVnTVRFM0xqVWdjUzAzTlM0MUlEYzFMalVnTFRFeE55NDFJREUzTXk0MUlIRXRORE1nTVRBeUlDMDBNeUF5TVRNZ2NUQWdNVEV4SURReklESXhNeUJ4TkRJZ09UZ2dNVEUzTGpVZ01UY3pMalVnY1RjMUxqVWdOelV1TlNBeE56TXVOU0F4TVRjdU5TQnhNVEF5SURReklESXhNeUEwTXlCYVRUUXlNVGtnTXpBME55QnhNVEV4SURBZ01qRXpJQzAwTXlCeE9UZ2dMVFF5SURFM015NDFJQzB4TVRjdU5TQnhOelV1TlNBdE56VXVOU0F4TVRjdU5TQXRNVGN6TGpVZ2NUUXpJQzB4TURJZ05ETWdMVEl4TXlCeE1DQXRNVEV4SUMwME15QXRNakV6SUhFdE5ESWdMVGs0SUMweE1UY3VOU0F0TVRjekxqVWdjUzAzTlM0MUlDMDNOUzQxSUMweE56TXVOU0F0TVRFM0xqVWdjUzB4TURJZ0xUUXpJQzB5TVRNdU5TQXRORE1nY1MweE1URXVOU0F3SUMweU1USXVOU0EwTXlCeExUazRJRFF5SUMweE56UWdNVEUzTGpVZ2NTMDNOaUEzTlM0MUlDMHhNVGNnTVRjekxqVWdjUzAwTXlBeE1ESWdMVFF6SURJeE15QnhNQ0F4TVRFZ05ETWdNakV6SUhFME1TQTVPQ0F4TVRjZ01UY3pMalVnY1RjMklEYzFMalVnTVRjMElERXhOeTQxSUhFeE1ERWdORE1nTWpFeklEUXpJRm9pSUM4K1BHZHNlWEJvSUdkc2VYQm9MVzVoYldVOUluQmhkWE5sSWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJqT3lJZ1pEMGlUVGt6T0NBME1EWXpJR3d3SUMwek1USTFJR3d4TWpVd0lEQWdiREFnTXpFeU5TQnNMVEV5TlRBZ01DQmFUVEk0TVRNZ05EQTJNeUJzTUNBdE16RXlOU0JzTVRJMU1DQXdJR3d3SURNeE1qVWdiQzB4TWpVd0lEQWdXaUlnTHo0OFoyeDVjR2dnWjJ4NWNHZ3RibUZ0WlQwaWNHeGhlU0lnZFc1cFkyOWtaVDBpSmlONFpXRXdaRHNpSUdROUlrMDJNalVnTkRNM05TQnNNemMxTUNBdE1UZzNOU0JzTFRNM05UQWdMVEU0TnpVZ2JEQWdNemMxTUNCYUlpQXZQanhuYkhsd2FDQm5iSGx3YUMxdVlXMWxQU0owY21saGJtZHNaUzF6SWlCMWJtbGpiMlJsUFNJbUkzaGxZVEJsT3lJZ1pEMGlUVEV5TlRBZ016RXlOU0JzTVRJMU1DQXRNVEkxTUNCc01USTFNQ0F4TWpRNElHd3RNalV3TUNBeUlGb2lJQzgrUEdkc2VYQm9JR2RzZVhCb0xXNWhiV1U5SW5WelpYSXRjM1JoZEhWekxXRjNZWGtpSUhWdWFXTnZaR1U5SWlZamVHVmhNR1k3SWlCa1BTSk5NakUxTmlBME9UWTVJSEV0TXpZd0lDMDBOaUF0TmprMUlDMHhPVGNnY1Mwek1qWWdMVEUwTnlBdE5qQXhJQzB6T0RBZ2NTMHlOelFnTFRJek1TQXRORGN5SUMwMU1qZ2djUzB5TURJZ0xUTXdNU0F0TXpBNUlDMDJORElnY1MweE1UQWdMVE0xTXlBdE1URXdJQzAzTWpJZ2NUQWdMVFF3TmlBeE1qZ2dMVGM0T0NCeE1USXpJQzB6TnpBZ016VTJJQzAyT0RZZ2NUSXlPU0F0TXpFeklEVTBNaUF0TlRReUlIRXpNVFlnTFRJek1pQTJPRFlnTFRNMU5pQnhNemd5SUMweE1qZ2dOemc0SUMweE1qZ2djVE0yT1NBd0lEY3lNaUF4TURjZ2NUTTBNaUF4TURRZ05qUTBJRE13TVNCeE1qazRJREU1TkNBMU16TWdORFl6SUhFeU16WWdNamN3SURNNE9TQTFPVE1nY1RFMU5pQXpNekVnTWpFeUlEWTVNaUJ4TFRFNE9DQXRNakEwSUMwME1qTXVOU0F0TXpVeElIRXRNak0xTGpVZ0xURTBOeUF0TkRrNExqVWdMVEl5TlNCeExUSTJPU0F0T0RBZ0xUVTBOeUF0T0RBZ2NTMHpNaklnTUNBdE5qSTRJREV3TXlCeExUSTVOU0E1T1NBdE5UUTRJREk0TmlCeExUSTFNU0F4T0RRZ0xUUXpOU0EwTXpVZ2NTMHhPRGNnTWpVeklDMHlPRFlnTlRRNElIRXRNVEF6SURNd05pQXRNVEF6SURZeU9DQnhNQ0F5T1RNZ09EQWdOVFk0SUhFM09DQXlOamtnTWpJMUxqVWdORGs0TGpVZ2NURTBOeTQxSURJeU9TNDFJRE0xTUM0MUlEUXdNaTQxSUZvaUlDOCtQR2RzZVhCb0lHZHNlWEJvTFc1aGJXVTlJblZ6WlhJdGMzUmhkSFZ6TFdSdVpDSWdkVzVwWTI5a1pUMGlKaU40WldFeE1Ec2lJR1E5SWsweU5UQXdJRFV3TURBZ2NTMDBNRFlnTUNBdE56ZzRJQzB4TWpnZ2NTMHpOekFnTFRFeU5DQXROamcySUMwek5UWWdjUzB6TVRNZ0xUSXlPU0F0TlRReUlDMDFORElnY1MweU16SWdMVE14TmlBdE16VTJJQzAyT0RZZ2NTMHhNamdnTFRNNE1pQXRNVEk0SUMwM09EZ2djVEFnTFRRd05pQXhNamdnTFRjNE9DQnhNVEkwSUMwek56QWdNelUySUMwMk9EWWdjVEl5T1NBdE16RXpJRFUwTWlBdE5UUXlJSEV6TVRZZ0xUSXpNaUEyT0RZZ0xUTTFOaUJ4TXpneUlDMHhNamdnTnpnNElDMHhNamdnY1RRd05pQXdJRGM0T0NBeE1qZ2djVE0zTUNBeE1qUWdOamcySURNMU5pQnhNekV6SURJeU9TQTFORElnTlRReUlIRXlNeklnTXpFMklETTFOaUEyT0RZZ2NURXlPQ0F6T0RJZ01USTRJRGM0T0NCeE1DQTBNRFlnTFRFeU9DQTNPRGdnY1MweE1qUWdNemN3SUMwek5UWWdOamcySUhFdE1qSTVJRE14TXlBdE5UUXlJRFUwTWlCeExUTXhOaUF5TXpJZ0xUWTROaUF6TlRZZ2NTMHpPRElnTVRJNElDMDNPRGdnTVRJNElGcE5NVFUyTXlBeU9UWTVJR3d4T0RjMUlEQWdjVGt4SURBZ01UYzRJQzB6T0NCeE9EUWdMVE0zSURFMU1DQXRNVEF6SUhFMk5pQXROallnTVRBeUlDMHhORGtnY1RNNElDMDROeUF6T0NBdE1UYzVJSEV3SUMwNU1pQXRNemdnTFRFM09TQnhMVE0ySUMwNE15QXRNVEF5SUMweE5Ea2djUzAyTmlBdE5qWWdMVEUxTUNBdE1UQXpJSEV0T0RjZ0xUTTRJQzB4TnpnZ0xUTTRJR3d0TVRnM05TQXdJSEV0T1RJZ01DQXRNVGM1SURNNElIRXRPRFFnTXpjZ0xURTFNQ0F4TURNZ2NTMDJOaUEyTmlBdE1UQXlJREUwT1NCeExUTTRJRGczSUMwek9DQXhOemtnY1RBZ09USWdNemdnTVRjNUlIRXpOaUE0TXlBeE1ESWdNVFE1SUhFMk5pQTJOaUF4TlRBZ01UQXpJSEU0TnlBek9DQXhOemtnTXpnZ1dpSWdMejQ4WjJ4NWNHZ2daMng1Y0dndGJtRnRaVDBpZFhObGNpMXpkR0YwZFhNdGFXNTJhWE5wWW14bElpQjFibWxqYjJSbFBTSW1JM2hsWVRFeE95SWdaRDBpVFRJMU1EQWdOVEF3TUNCeExUUXdOaUF3SUMwM09EZ2dMVEV5T0NCeExUTTNNQ0F0TVRJMElDMDJPRFlnTFRNMU5pQnhMVE14TXlBdE1qSTVJQzAxTkRJZ0xUVTBNaUJ4TFRJek1pQXRNekUySUMwek5UWWdMVFk0TmlCeExURXlPQ0F0TXpneUlDMHhNamdnTFRjNE9DQnhNQ0F0TkRBMklERXlPQ0F0TnpnNElIRXhNalFnTFRNM01DQXpOVFlnTFRZNE5pQnhNakk1SUMwek1UTWdOVFF5SUMwMU5ESWdjVE14TmlBdE1qTXlJRFk0TmlBdE16VTJJSEV6T0RJZ0xURXlPQ0EzT0RnZ0xURXlPQ0J4TkRBMklEQWdOemc0SURFeU9DQnhNemN3SURFeU5DQTJPRFlnTXpVMklIRXpNVE1nTWpJNUlEVTBNaUExTkRJZ2NUSXpNaUF6TVRZZ016VTJJRFk0TmlCeE1USTRJRE00TWlBeE1qZ2dOemc0SUhFd0lEUXdOaUF0TVRJNElEYzRPQ0J4TFRFeU5DQXpOekFnTFRNMU5pQTJPRFlnY1MweU1qa2dNekV6SUMwMU5ESWdOVFF5SUhFdE16RTJJREl6TWlBdE5qZzJJRE0xTmlCeExUTTRNaUF4TWpnZ0xUYzRPQ0F4TWpnZ1drMHlOVEF3SURRd01EQWdjVE14TVNBd0lEVTVNQ0F0TVRFMklIRXlOekVnTFRFeE1pQTBOell1TlNBdE16RTNMalVnY1RJd05TNDFJQzB5TURVdU5TQXpNVGN1TlNBdE5EYzJMalVnY1RFeE5pQXRNamM1SURFeE5pQXROVGt3SUhFd0lDMHpNVEVnTFRFeE5pQXROVGt3SUhFdE1URXlJQzB5TnpFZ0xUTXhOeTQxSUMwME56WXVOU0J4TFRJd05TNDFJQzB5TURVdU5TQXRORGMyTGpVZ0xUTXhOeTQxSUhFdE1qYzVJQzB4TVRZZ0xUVTVNQ0F0TVRFMklIRXRNekV4SURBZ0xUVTVNQ0F4TVRZZ2NTMHlOekVnTVRFeUlDMDBOell1TlNBek1UY3VOU0J4TFRJd05TNDFJREl3TlM0MUlDMHpNVGN1TlNBME56WXVOU0J4TFRFeE5pQXlOemtnTFRFeE5pQTFPVEFnY1RBZ016RXhJREV4TmlBMU9UQWdjVEV4TWlBeU56RWdNekUzTGpVZ05EYzJMalVnY1RJd05TNDFJREl3TlM0MUlEUTNOaTQxSURNeE55NDFJSEV5TnprZ01URTJJRFU1TUNBeE1UWWdXaUlnTHo0OFoyeDVjR2dnWjJ4NWNHZ3RibUZ0WlQwaWRYTmxjaTF6ZEdGMGRYTXRiMjVzYVc1bElpQjFibWxqYjJSbFBTSW1JM2hsWVRFeU95SWdaRDBpVFRFMU1EQWdNVFV3TUNCc01qQXdNQ0F3SUd3d0lESXdNREFnYkMweU1EQXdJREFnYkRBZ0xUSXdNREFnV2sweU5UQXdJRFV3TURBZ2NTMDBNRFlnTUNBdE56ZzRJQzB4TWpnZ2NTMHpOekFnTFRFeU5DQXROamcySUMwek5UWWdjUzB6TVRNZ0xUSXlPU0F0TlRReUlDMDFORElnY1MweU16SWdMVE14TmlBdE16VTJJQzAyT0RZZ2NTMHhNamdnTFRNNE1pQXRNVEk0SUMwM09EZ2djVEFnTFRRd05pQXhNamdnTFRjNE9DQnhNVEkwSUMwek56QWdNelUySUMwMk9EWWdjVEl5T1NBdE16RXpJRFUwTWlBdE5UUXlJSEV6TVRZZ0xUSXpNaUEyT0RZZ0xUTTFOaUJ4TXpneUlDMHhNamdnTnpnNElDMHhNamdnY1RRd05pQXdJRGM0T0NBeE1qZ2djVE0zTUNBeE1qUWdOamcySURNMU5pQnhNekV6SURJeU9TQTFORElnTlRReUlIRXlNeklnTXpFMklETTFOaUEyT0RZZ2NURXlPQ0F6T0RJZ01USTRJRGM0T0NCeE1DQTBNRFlnTFRFeU9DQTNPRGdnY1MweE1qUWdNemN3SUMwek5UWWdOamcySUhFdE1qSTVJRE14TXlBdE5UUXlJRFUwTWlCeExUTXhOaUF5TXpJZ0xUWTROaUF6TlRZZ2NTMHpPRElnTVRJNElDMDNPRGdnTVRJNElGb2lJQzgrUEM5bWIyNTBQand2WkdWbWN6NDhMM04yWno0PVwiIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmZvbnQvdHRmO2Jhc2U2NCxBQUVBQUFBS0FJQUFBd0FnVDFNdk1uVGpqOUVBQUFDc0FBQUFZR050WVhBQURldTRBQUFCREFBQUFVSm5iSGxteDBjNVRBQUFBbEFBQUFmOGFHVmhaQ3ZyRi9jQUFBcE1BQUFBTm1ob1pXRW0vUk9GQUFBS2hBQUFBQ1JvYlhSNFo3Ny8vd0FBQ3FnQUFBQTBiRzlqWVEyOEQyWUFBQXJjQUFBQUtHMWhlSEFCSUFCWEFBQUxCQUFBQUNCdVlXMWxiY1Q1VkFBQUN5UUFBQUttY0c5emREOVV2dGNBQUEzTUFBQUJGZ0FFRXNvQmtBQUZBQUFNWlEyc0FBQUN2QXhsRGF3QUFBbGdBUFVGQ2dBQUFnQUZBd0FBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFCUVprVmtBRURxQWVvU0U0Z0FBQUhDRTRnQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQU1BQUFBREFBQUFIQUFCQUFBQUFBQThBQU1BQVFBQUFCd0FCQUFnQUFBQUJBQUVBQUVBQU9vUy8vOEFBT29CLy84V0FBQUJBQUFBQUFBQUFRWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUE2bUQwTUFCUUFMQUFBSkFoRUpCQkVKQVE2bStvSUZmdnU2QkViNmd2cUNCWDc3dWdSR0QwTDZndnFDQVRnRVJnUkdBVGo2Z3ZxQ0FUZ0VSZ1JHQUFFQUFBQUFEVzRTVUFBRkFBQUpBUkVKQVJFR0d3ZFQ5M1FJakFuRStLMyt5QWlMQ0l6K3h3QUNBQUFBQUEvZkQwTUFCUUFMQUFBSkFoRUpCQkVKQVFUaUJYNzZnZ1JHKzdvRmZnVi8rb0VFUnZ1NkJFWUZmZ1YrL3NqN3V2dTYvc2dGZmdWKy9zajd1dnU2QUFFQUFBQUFEcVlTVUFBRkFBQUpBUkVKQVJFTmJ2aXRDSXYzZFFuRUIxTUJPZmQwOTNVQk9BQUJBQUFBQUFZM0U0Z0FCUUFBRXdjSkFSY0JsSlFGY3ZxT2xBV2pFNGhWOXBIMmtWVUp4QUFBQVFBQUFBQVJodytEQUFVQUFBa0ZEODMzOC92Ny9rWUZ2d25IRDRQMzh3UUYva2Y2UVFuR0FBRUFBQUFBRVJjUkZ3QUxBQUFKQ3hFWC9lMzZ3UHJBL2UwRlFQckFBaE1GUUFWQUFoUDZ3QVNFL2UwRlFQckFBaE1GUUFWQUFoUDZ3QVZBL2UzNndBQUIvLzhBQUJPVEV1d0FNd0FBQVNJSERnRVhGaGNCSVNZSEJnY0dCd1lVRnhZWEZoY1dOeUVCQmdjR0Z4WVhIZ0VYRmhjV056WTNBVFkzTmljbUp3RXVBUXBnWlU5S1JoQVNTQVhYOGVCTlBqb3BKeFFVRkJRbktUbytUUTRnK2lrM0doZ0RBeHNaVmpVM096NDZQelVIN1RzVkZSUVZQUGdUTEhRUzdEazByRmxnUi9vcUFSc1lMaXc1T0hnNE9Td3VHQnNDK2lrMVB6cytPamMyVmhrYUF3TVlHVGdIN0R4UlVFOVNQQWZzTFRJQUFBQUNBQUFBQUE2bUVsQUFHQUJHQUFBQklnY09BUWNHRkJjZUFSY1dNamMrQVRjMk5DY3VBU2NtQVNJSEJnY0dGQmNXRnhZeklSRWhJZ2NHQndZVUZ4WVhGamNoTWpjMk56WTBKeVluSmlNaEVUUW5KaWNtSXdsMmIyWmltQ2tyS3ltWVltYmVabUtYS2lzcktwZGladncyVmtoSEtTc3JLVWRJVmdKeC9ZOVdTRWNwS3lzcFIwaFdCMU5WU0VjcEt5c3BSMGhWL1k4cktVZEpWUkpRS3lxWFkyWGZaV0tZS1NzcktaaGlaZDlsWTVjcUsvbmxLeWxIU0t0SVJ5a3IrZVlyS1VkSnFrbEhLU3NCS2lsSFNhcEpSeWtyQjFOVlNFY3BLd0FBQXdBQUFBQVJGeEVYQUFNQUJ3QUxBQUFCRVNFUkFSRWhFUUVSSVJFQ2NRNm04Vm9PcHZGYURxWVJGLzJQQW5INTV2MlBBbkg1NWYyUEFuRUFBd0FBQUFBU25ndm5BQmdBTVFCS0FBQUJNaGNlQVJjV0ZBY09BUWNHSWljdUFTY21ORGMrQVRjMklUSVhIZ0VYRmhRSERnRUhCaUluTGdFbkpqUTNQZ0UzTmlFeUZ4NEJGeFlVQnc0QkJ3WWlKeTRCSnlZME56NEJOellERFhCbFlwZ3BLeXNwbUdKbDMyWmlseW9yS3lxWFltWUhKbTltWXBjcUt5c3FsMkptM21aaWx5b3JLeXFYWW1ZSEptOW1ZcGNxS3lzcWwySm0zMlZpbUNrckt5bVlZbVVMNXlzcWwySm0zbVppbHlvckt5cVhZbWJlWm1LWEtpc3JLcGRpWnQ1bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltYmVabUtYS2lzcktwZGladDVtWXBjcUt3QUFBQUFDQUFBQUFBL2ZEOThBQXdBSEFBQUJFU0VSSVJFaEVRT3FCT0lDY1FUaUQ5L3p5d3cxODhzTU5RQUFBQUVBQUFBQUVSY1JGd0FDQUFBSkFnSnhEcWJ4V2hFWCtLMzRyUUFCQUFBQUFBNm1ERFVBQWdBQUNRSUU0Z1RpQk9JTU5mc2VCT0FBQWYvZ0FBQVRhUk5wQURFQUFBRUVCUVFGQkFNQ0F3SVJFQk1TRXhJRkJBVUVJU0FsSkNVa0V4SVRFaE1HQUFVRUlTQWxKQ2NtSnlZREFoRVFFeElBQ0d6K21QNngvcnIrN2Y3dXhzcHJib0I3NmVVQk9RRThBWElCZmdHV0FYRUJZUUZXQVM0Qkt1dnNtWnc0dlA0cC92bis4LzdxL3I3K3p2N1ovZnU0dTJOblVFNEJKeE5wTHBlVDZlZisxLzdUL3F2K24vNlAvbXIrZ3Y2Ty9zVCt4K1hvZklCcmFNWENBUTBCRGdGREFVc0JhY3orMms1UVoyTzd1UHY5QVNjQk1nRkNBU1VCRXdFTkFjc0FBZ0FBQUFBVGlCT0lBQ1FBUUFBQUFTQUZCQVVFQXdJREFoQVRFaE1TQlFRRkJDQWxKQ1VrRXhJVEVoQURBZ01DSlNRbEpBRWhNaGNlQVJjV0ZBY09BUWNHSXlFaUp5NEJKeVkwTno0Qk56WUp4UDVxL29MK2p2N0Uvc2ZsNkh5QWdIem81UUU1QVR3QmNnRitBeXdCZmdGeUFUd0JPZVhvZklDQWZPamwvc2YreFA2Ty9vTDZ3UWRUVzFkVWhDUW1KaVNFVkZkYitLMWNWMVNFSkNZbUpJUlVWeE9JZ0h6bzVmN0gvc1QranY2Qy9OVCtndjZPL3NUK3grWG9mSUNBZk9qbEFUa0JQQUZ5QVg0RExBRitBWElCUEFFNTVlaDhnUGdSSmlXRVUxZTRWMU9FSlNZbUpZUlRWN2hYVTRRbEpnQUFBQUlBQUFBQUU0Z1RpQUFrQUQwQUFBRWdCUVFGQkFNQ0F3SVFFeElURWdVRUJRUWdKU1FsSkJNU0V4SVFBd0lEQWlVa0pTUUJJQVVFQUJNU0VBTUNBQVVFSUNVa0FBTUNFQk1TQUNVa0NjVCthdjZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBZ0h6bzVmN0gvc1QranY2Qy9tb0JOd0VYQVE4Qm0zQjBkSEQrWmY3eC91bjlrdjdwL3ZIK1pYQjBkSEFCbXdFUEFSY1RpSUI4Nk9YK3gvN0UvbzcrZ3Z6VS9vTCtqdjdFL3NmbDZIeUFnSHpvNVFFNUFUd0JjZ0YrQXl3QmZnRnlBVHdCT2VYb2ZJRDhHSFJ3L21YKzhmN3AvWkwrNmY3eC9tVndkSFJ3QVpzQkR3RVhBbTRCRndFUEFadHdkQUFBQUFJQUFBQUFFNGdUaUFBREFDZ0FBQUVoRVNFQklBVUVCUVFEQWdNQ0VCTVNFeElGQkFVRUlDVWtKU1FURWhNU0VBTUNBd0lsSkNVa0Jkd0gwUGd3QStqK2F2NkMvbzcreFA3SDVlaDhnSUI4Nk9VQk9RRThBWElCZmdNc0FYNEJjZ0U4QVRubDZIeUFnSHpvNWY3SC9zVCtqdjZDQmR3SDBBWGNnSHpvNWY3SC9zVCtqdjZDL05UK2d2Nk8vc1QreCtYb2ZJQ0FmT2psQVRrQlBBRnlBWDRETEFGK0FYSUJQQUU1NWVoOGdBQUFBUUFBQUFFQUFEL3MvRHRmRHp6MUFBc1RpQUFBQUFEYzFVZjFBQUFBQU55RWEvWC80QUFBRTVNVGlBQUFBQWdBQWdBQUFBQUFBQUFCQUFBVGlBQUFBQUFUaVAvZy8vVVRrd0FCQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0FBQUFBVGlBQUFFNGdBQUJPSUFBQVRpQUFBQmpZQUFCT0lBQUFBQVAvL0FBQUFBQUFBQUFBQUFBQUEvK0FBQUFBQUFBQUFBQUFBQUNJQU5nQllBR3dBZ0FDVUFMUUJEZ0Y4QVpvQ0VBSW1BalFDUWdLb0F5SURwZ1ArQUFFQUFBQVRBRXNBQXdBQUFBQUFBZ0FBQUFvQUNnQUFBUDhBQUFBQUFBQUFBQUFRQU1ZQUFRQUFBQUFBQVFBVUFBQUFBUUFBQUFBQUFnQUhBQlFBQVFBQUFBQUFBd0FVQUJzQUFRQUFBQUFBQkFBVUFDOEFBUUFBQUFBQUJRQUxBRU1BQVFBQUFBQUFCZ0FVQUU0QUFRQUFBQUFBQ2dBckFHSUFBUUFBQUFBQUN3QVRBSTBBQXdBQkJBa0FBUUFvQUtBQUF3QUJCQWtBQWdBT0FNZ0FBd0FCQkFrQUF3QW9BTllBQXdBQkJBa0FCQUFvQVA0QUF3QUJCQWtBQlFBV0FTWUFBd0FCQkFrQUJnQW9BVHdBQXdBQkJBa0FDZ0JXQVdRQUF3QUJCQWtBQ3dBbUFicHBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhabEpsWjNWc1lYSnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhabWxqYjI1bWIyNTBMWFoxWlMwNE5HTTBOakZtVm1WeWMybHZiaUF4TGpCcFkyOXVabTl1ZEMxMmRXVXRPRFJqTkRZeFprZGxibVZ5WVhSbFpDQmllU0J6ZG1jeWRIUm1JR1p5YjIwZ1JtOXVkR1ZzYkc4Z2NISnZhbVZqZEM1b2RIUndPaTh2Wm05dWRHVnNiRzh1WTI5dEFHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JTQUdVQVp3QjFBR3dBWVFCeUFHa0FZd0J2QUc0QVpnQnZBRzRBZEFBdEFIWUFkUUJsQUMwQU9BQTBBR01BTkFBMkFERUFaZ0JwQUdNQWJ3QnVBR1lBYndCdUFIUUFMUUIyQUhVQVpRQXRBRGdBTkFCakFEUUFOZ0F4QUdZQVZnQmxBSElBY3dCcEFHOEFiZ0FnQURFQUxnQXdBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCSEFHVUFiZ0JsQUhJQVlRQjBBR1VBWkFBZ0FHSUFlUUFnQUhNQWRnQm5BRElBZEFCMEFHWUFJQUJtQUhJQWJ3QnRBQ0FBUmdCdkFHNEFkQUJsQUd3QWJBQnZBQ0FBY0FCeUFHOEFhZ0JsQUdNQWRBQXVBR2dBZEFCMEFIQUFPZ0F2QUM4QVpnQnZBRzRBZEFCbEFHd0FiQUJ2QUM0QVl3QnZBRzBBQUFBQ0FBQUFBQUFBQURJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRBQk1BQUFFQ0FRTUJCQUVGQVFZQkJ3RUlBUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBUklCRXhGaGNuSnZkeTFzWldaMExXUnZkV0pzWlFwaGNuSnZkeTFzWldaMEVtRnljbTkzTFhKcFoyaDBMV1J2ZFdKc1pRdGhjbkp2ZHkxeWFXZG9kQXBpY21WaFpHTnlkVzFpQ1dOb1pXTnJiV0Z5YXdWamJHOXpaUWRqYjI1bWFYSnRCR2x1Wm04RWJXVnVkUVJ0YjNKbEJYQmhkWE5sQkhCc1lYa0tkSEpwWVc1bmJHVXRjeEIxYzJWeUxYTjBZWFIxY3kxaGQyRjVEM1Z6WlhJdGMzUmhkSFZ6TFdSdVpCVjFjMlZ5TFhOMFlYUjFjeTFwYm5acGMybGliR1VTZFhObGNpMXpkR0YwZFhNdGIyNXNhVzVsQUFBPVwiIiwiZXhwb3J0IGRlZmF1bHQgXCJkYXRhOmZvbnQvd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUE4c0FBb0FBQUFBRHVRQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJQVXk4eUFBQUE5QUFBQUdBQUFBQmdkT09QMFdOdFlYQUFBQUZVQUFBQlFnQUFBVUlBRGV1NFoyeDVaZ0FBQXBnQUFBZjhBQUFIL01kSE9VeG9aV0ZrQUFBS2xBQUFBRFlBQUFBMksrc1g5MmhvWldFQUFBck1BQUFBSkFBQUFDUW0vUk9GYUcxMGVBQUFDdkFBQUFBMEFBQUFOR2UrLy85c2IyTmhBQUFMSkFBQUFDZ0FBQUFvRGJ3UFptMWhlSEFBQUF0TUFBQUFJQUFBQUNBQklBQlhibUZ0WlFBQUMyd0FBQUttQUFBQ3BtM0UrVlJ3YjNOMEFBQU9GQUFBQVJZQUFBRVdQMVMrMXdBRUVzb0JrQUFGQUFBTVpRMnNBQUFDdkF4bERhd0FBQWxnQVBVRkNnQUFBZ0FGQXdBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQlFaa1ZrQUVEcUFlb1NFNGdBQUFIQ0U0Z0FBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFNQUFBQURBQUFBSEFBQkFBQUFBQUE4QUFNQUFRQUFBQndBQkFBZ0FBQUFCQUFFQUFFQUFPb1MvLzhBQU9vQi8vOFdBQUFCQUFBQUFBQUFBUVlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBNm1EME1BQlFBTEFBQUpBaEVKQkJFSkFRNm0rb0lGZnZ1NkJFYjZndnFDQlg3N3VnUkdEMEw2Z3ZxQ0FUZ0VSZ1JHQVRqNmd2cUNBVGdFUmdSR0FBRUFBQUFBRFc0U1VBQUZBQUFKQVJFSkFSRUdHd2RUOTNRSWpBbkUrSzMreUFpTENJeit4d0FDQUFBQUFBL2ZEME1BQlFBTEFBQUpBaEVKQkJFSkFRVGlCWDc2Z2dSRys3b0ZmZ1YvK29FRVJ2dTZCRVlGZmdWKy9zajd1dnU2L3NnRmZnVisvc2o3dXZ1NkFBRUFBQUFBRHFZU1VBQUZBQUFKQVJFSkFSRU5idml0Q0l2M2RRbkVCMU1CT2ZkMDkzVUJPQUFCQUFBQUFBWTNFNGdBQlFBQUV3Y0pBUmNCbEpRRmN2cU9sQVdqRTRoVjlwSDJrVlVKeEFBQUFRQUFBQUFSaHcrREFBVUFBQWtGRDgzMzgvdjcva1lGdnduSEQ0UDM4d1FGL2tmNlFRbkdBQUVBQUFBQUVSY1JGd0FMQUFBSkN4RVgvZTM2d1ByQS9lMEZRUHJBQWhNRlFBVkFBaFA2d0FTRS9lMEZRUHJBQWhNRlFBVkFBaFA2d0FWQS9lMzZ3QUFCLy84QUFCT1RFdXdBTXdBQUFTSUhEZ0VYRmhjQklTWUhCZ2NHQndZVUZ4WVhGaGNXTnlFQkJnY0dGeFlYSGdFWEZoY1dOelkzQVRZM05pY21Kd0V1QVFwZ1pVOUtSaEFTU0FYWDhlQk5Qam9wSnhRVUZCUW5LVG8rVFE0ZytpazNHaGdEQXhzWlZqVTNPejQ2UHpVSDdUc1ZGUlFWUFBnVExIUVM3RGswckZsZ1Ivb3FBUnNZTGl3NU9IZzRPU3d1R0JzQytpazFQenMrT2pjMlZoa2FBd01ZR1RnSDdEeFJVRTlTUEFmc0xUSUFBQUFDQUFBQUFBNm1FbEFBR0FCR0FBQUJJZ2NPQVFjR0ZCY2VBUmNXTWpjK0FUYzJOQ2N1QVNjbUFTSUhCZ2NHRkJjV0Z4WXpJUkVoSWdjR0J3WVVGeFlYRmpjaE1qYzJOelkwSnlZbkppTWhFVFFuSmljbUl3bDJiMlppbUNrckt5bVlZbWJlWm1LWEtpc3JLcGRpWnZ3MlZraEhLU3NyS1VkSVZnSngvWTlXU0VjcEt5c3BSMGhXQjFOVlNFY3BLeXNwUjBoVi9ZOHJLVWRKVlJKUUt5cVhZMlhmWldLWUtTc3JLWmhpWmQ5bFk1Y3FLL25sS3lsSFNLdElSeWtyK2VZcktVZEpxa2xIS1NzQktpbEhTYXBKUnlrckIxTlZTRWNwS3dBQUF3QUFBQUFSRnhFWEFBTUFCd0FMQUFBQkVTRVJBUkVoRVFFUklSRUNjUTZtOFZvT3B2RmFEcVlSRi8yUEFuSDU1djJQQW5INTVmMlBBbkVBQXdBQUFBQVNuZ3ZuQUJnQU1RQktBQUFCTWhjZUFSY1dGQWNPQVFjR0lpY3VBU2NtTkRjK0FUYzJJVElYSGdFWEZoUUhEZ0VIQmlJbkxnRW5KalEzUGdFM05pRXlGeDRCRnhZVUJ3NEJCd1lpSnk0Qkp5WTBOejRCTnpZRERYQmxZcGdwS3lzcG1HSmwzMlppbHlvckt5cVhZbVlISm05bVlwY3FLeXNxbDJKbTNtWmlseW9yS3lxWFltWUhKbTltWXBjcUt5c3FsMkptMzJWaW1Da3JLeW1ZWW1VTDV5c3FsMkptM21aaWx5b3JLeXFYWW1iZVptS1hLaXNyS3BkaVp0NW1ZcGNxS3lzcWwySm0zbVppbHlvckt5cVhZbWJlWm1LWEtpc3JLcGRpWnQ1bVlwY3FLd0FBQUFBQ0FBQUFBQS9mRDk4QUF3QUhBQUFCRVNFUklSRWhFUU9xQk9JQ2NRVGlEOS96eXd3MTg4c01OUUFBQUFFQUFBQUFFUmNSRndBQ0FBQUpBZ0p4RHFieFdoRVgrSzM0clFBQkFBQUFBQTZtRERVQUFnQUFDUUlFNGdUaUJPSU1OZnNlQk9BQUFmL2dBQUFUYVJOcEFERUFBQUVFQlFRRkJBTUNBd0lSRUJNU0V4SUZCQVVFSVNBbEpDVWtFeElURWhNR0FBVUVJU0FsSkNjbUp5WURBaEVRRXhJQUNHeittUDZ4L3JyKzdmN3V4c3ByYm9CNzZlVUJPUUU4QVhJQmZnR1dBWEVCWVFGV0FTNEJLdXZzbVp3NHZQNHAvdm4rOC83cS9yNyt6djdaL2Z1NHUyTm5VRTRCSnhOcExwZVQ2ZWYrMS83VC9xdituLzZQL21yK2d2Nk8vc1QreCtYb2ZJQnJhTVhDQVEwQkRnRkRBVXNCYWN6KzJrNVFaMk83dVB2OUFTY0JNZ0ZDQVNVQkV3RU5BY3NBQWdBQUFBQVRpQk9JQUNRQVFBQUFBU0FGQkFVRUF3SURBaEFURWhNU0JRUUZCQ0FsSkNVa0V4SVRFaEFEQWdNQ0pTUWxKQUVoTWhjZUFSY1dGQWNPQVFjR0l5RWlKeTRCSnlZME56NEJOellKeFA1cS9vTCtqdjdFL3NmbDZIeUFnSHpvNVFFNUFUd0JjZ0YrQXl3QmZnRnlBVHdCT2VYb2ZJQ0FmT2psL3NmK3hQNk8vb0w2d1FkVFcxZFVoQ1FtSmlTRVZGZGIrSzFjVjFTRUpDWW1KSVJVVnhPSWdIem81ZjdIL3NUK2p2NkMvTlQrZ3Y2Ty9zVCt4K1hvZklDQWZPamxBVGtCUEFGeUFYNERMQUYrQVhJQlBBRTU1ZWg4Z1BnUkppV0VVMWU0VjFPRUpTWW1KWVJUVjdoWFU0UWxKZ0FBQUFJQUFBQUFFNGdUaUFBa0FEMEFBQUVnQlFRRkJBTUNBd0lRRXhJVEVnVUVCUVFnSlNRbEpCTVNFeElRQXdJREFpVWtKU1FCSUFVRUFCTVNFQU1DQUFVRUlDVWtBQU1DRUJNU0FDVWtDY1QrYXY2Qy9vNyt4UDdINWVoOGdJQjg2T1VCT1FFOEFYSUJmZ01zQVg0QmNnRThBVG5sNkh5QWdIem81ZjdIL3NUK2p2NkMvbW9CTndFWEFROEJtM0IwZEhEK1pmN3gvdW45a3Y3cC92SCtaWEIwZEhBQm13RVBBUmNUaUlCODZPWCt4LzdFL283K2d2elUvb0wranY3RS9zZmw2SHlBZ0h6bzVRRTVBVHdCY2dGK0F5d0JmZ0Z5QVR3Qk9lWG9mSUQ4R0hSdy9tWCs4ZjdwL1pMKzZmN3gvbVZ3ZEhSd0Fac0JEd0VYQW00QkZ3RVBBWnR3ZEFBQUFBSUFBQUFBRTRnVGlBQURBQ2dBQUFFaEVTRUJJQVVFQlFRREFnTUNFQk1TRXhJRkJBVUVJQ1VrSlNRVEVoTVNFQU1DQXdJbEpDVWtCZHdIMFBnd0EraithdjZDL283K3hQN0g1ZWg4Z0lCODZPVUJPUUU4QVhJQmZnTXNBWDRCY2dFOEFUbmw2SHlBZ0h6bzVmN0gvc1QranY2Q0Jkd0gwQVhjZ0h6bzVmN0gvc1QranY2Qy9OVCtndjZPL3NUK3grWG9mSUNBZk9qbEFUa0JQQUZ5QVg0RExBRitBWElCUEFFNTVlaDhnQUFBQVFBQUFBRUFBRC9zL0R0ZkR6ejFBQXNUaUFBQUFBRGMxVWYxQUFBQUFOeUVhL1gvNEFBQUU1TVRpQUFBQUFnQUFnQUFBQUFBQUFBQkFBQVRpQUFBQUFBVGlQL2cvL1VUa3dBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQndBQUFBQVRpQUFBRTRnQUFCT0lBQUFUaUFBQUJqWUFBQk9JQUFBQUFQLy9BQUFBQUFBQUFBQUFBQUFBLytBQUFBQUFBQUFBQUFBQUFDSUFOZ0JZQUd3QWdBQ1VBTFFCRGdGOEFab0NFQUltQWpRQ1FnS29BeUlEcGdQK0FBRUFBQUFUQUVzQUF3QUFBQUFBQWdBQUFBb0FDZ0FBQVA4QUFBQUFBQUFBQUFBUUFNWUFBUUFBQUFBQUFRQVVBQUFBQVFBQUFBQUFBZ0FIQUJRQUFRQUFBQUFBQXdBVUFCc0FBUUFBQUFBQUJBQVVBQzhBQVFBQUFBQUFCUUFMQUVNQUFRQUFBQUFBQmdBVUFFNEFBUUFBQUFBQUNnQXJBR0lBQVFBQUFBQUFDd0FUQUkwQUF3QUJCQWtBQVFBb0FLQUFBd0FCQkFrQUFnQU9BTWdBQXdBQkJBa0FBd0FvQU5ZQUF3QUJCQWtBQkFBb0FQNEFBd0FCQkFrQUJRQVdBU1lBQXdBQkJBa0FCZ0FvQVR3QUF3QUJCQWtBQ2dCV0FXUUFBd0FCQkFrQUN3QW1BYnBwWTI5dVptOXVkQzEyZFdVdE9EUmpORFl4WmxKbFozVnNZWEpwWTI5dVptOXVkQzEyZFdVdE9EUmpORFl4Wm1samIyNW1iMjUwTFhaMVpTMDROR00wTmpGbVZtVnljMmx2YmlBeExqQnBZMjl1Wm05dWRDMTJkV1V0T0RSak5EWXhaa2RsYm1WeVlYUmxaQ0JpZVNCemRtY3lkSFJtSUdaeWIyMGdSbTl1ZEdWc2JHOGdjSEp2YW1WamRDNW9kSFJ3T2k4dlptOXVkR1ZzYkc4dVkyOXRBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCU0FHVUFad0IxQUd3QVlRQnlBR2tBWXdCdkFHNEFaZ0J2QUc0QWRBQXRBSFlBZFFCbEFDMEFPQUEwQUdNQU5BQTJBREVBWmdCcEFHTUFid0J1QUdZQWJ3QnVBSFFBTFFCMkFIVUFaUUF0QURnQU5BQmpBRFFBTmdBeEFHWUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FERUFMZ0F3QUdrQVl3QnZBRzRBWmdCdkFHNEFkQUF0QUhZQWRRQmxBQzBBT0FBMEFHTUFOQUEyQURFQVpnQkhBR1VBYmdCbEFISUFZUUIwQUdVQVpBQWdBR0lBZVFBZ0FITUFkZ0JuQURJQWRBQjBBR1lBSUFCbUFISUFid0J0QUNBQVJnQnZBRzRBZEFCbEFHd0FiQUJ2QUNBQWNBQnlBRzhBYWdCbEFHTUFkQUF1QUdnQWRBQjBBSEFBT2dBdkFDOEFaZ0J2QUc0QWRBQmxBR3dBYkFCdkFDNEFZd0J2QUcwQUFBQUNBQUFBQUFBQUFESUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUJNQUFBRUNBUU1CQkFFRkFRWUJCd0VJQVFrQkNnRUxBUXdCRFFFT0FROEJFQUVSQVJJQkV4Rmhjbkp2ZHkxc1pXWjBMV1J2ZFdKc1pRcGhjbkp2ZHkxc1pXWjBFbUZ5Y205M0xYSnBaMmgwTFdSdmRXSnNaUXRoY25KdmR5MXlhV2RvZEFwaWNtVmhaR055ZFcxaUNXTm9aV05yYldGeWF3VmpiRzl6WlFkamIyNW1hWEp0QkdsdVptOEViV1Z1ZFFSdGIzSmxCWEJoZFhObEJIQnNZWGtLZEhKcFlXNW5iR1V0Y3hCMWMyVnlMWE4wWVhSMWN5MWhkMkY1RDNWelpYSXRjM1JoZEhWekxXUnVaQlYxYzJWeUxYTjBZWFIxY3kxcGJuWnBjMmxpYkdVU2RYTmxjaTF6ZEdGMGRYTXRiMjVzYVc1bEFBQT1cIiIsImltcG9ydCB7IGdldEdldHRleHRCdWlsZGVyIH0gZnJvbSAnQG5leHRjbG91ZC9sMTBuL2Rpc3QvZ2V0dGV4dCdcblxuY29uc3QgZ3RCdWlsZGVyID0gZ2V0R2V0dGV4dEJ1aWxkZXIoKVxuXHQuZGV0ZWN0TG9jYWxlKClcblxuLy8gRGVjb21wcmVzcyBUcmFuc2xhdGlvbnMgdG8gZ2V0dGV4dCBmb3JtYXQgYW5kIGFkZCB0byBndEJ1aWxkZXJcblRSQU5TTEFUSU9OUy5mb3JFYWNoKChsYW5nKSA9PiB7XG5cdGNvbnN0IHRyYW5zbGF0aW9ucyA9IHt9XG5cblx0Zm9yIChjb25zdCBrZXkgaW4gbGFuZy50cmFuc2xhdGlvbnMpIHtcblx0XHQvLyBQbHVyYWxcblx0XHRpZiAobGFuZy50cmFuc2xhdGlvbnNba2V5XS5wbHVyYWxJZCkge1xuXHRcdFx0dHJhbnNsYXRpb25zW2tleV0gPSB7XG5cdFx0XHRcdG1zZ2lkOiBrZXksXG5cdFx0XHRcdG1zZ2lkX3BsdXJhbDogbGFuZy50cmFuc2xhdGlvbnNba2V5XS5wbHVyYWxJZCxcblx0XHRcdFx0bXNnc3RyOiBsYW5nLnRyYW5zbGF0aW9uc1trZXldLm1zZ3N0cixcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXG5cdFx0Ly8gU2luZ3VsYXJcblx0XHR0cmFuc2xhdGlvbnNba2V5XSA9IHtcblx0XHRcdG1zZ2lkOiBrZXksXG5cdFx0XHRtc2dzdHI6IFtcblx0XHRcdFx0bGFuZy50cmFuc2xhdGlvbnNba2V5XSxcblx0XHRcdF0sXG5cdFx0fVxuXHR9XG5cblx0Z3RCdWlsZGVyLmFkZFRyYW5zbGF0aW9uKGxhbmcubG9jYWxlLCB7XG5cdFx0dHJhbnNsYXRpb25zOiB7XG5cdFx0XHQnJzogdHJhbnNsYXRpb25zLFxuXHRcdH0sXG5cdH0pXG59KVxuXG5jb25zdCBndCA9IGd0QnVpbGRlci5idWlsZCgpXG5cbmNvbnN0IG4gPSBndC5uZ2V0dGV4dC5iaW5kKGd0KVxuY29uc3QgdCA9IGd0LmdldHRleHQuYmluZChndClcblxuZXhwb3J0IHsgdCwgbiB9XG4iLCJcbi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGJlZm9yZSgpIHtcblx0XHQvLyBhbGwgYWN0aW9ucyByZXF1aXJlcyBhIHZhbGlkIHRleHQgY29udGVudFxuXHRcdC8vIGlmIG5vbmUsIGZvcmJpZCB0aGUgY29tcG9uZW50IG1vdW50IGFuZCB0aHJvdyBlcnJvclxuXHRcdGlmICghdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCB0aGlzLnRleHQudHJpbSgpID09PSAnJykge1xuXHRcdFx0VnVlLnV0aWwud2FybihgJHt0aGlzLiRvcHRpb25zLm5hbWV9IGNhbm5vdCBiZSBlbXB0eSBhbmQgcmVxdWlyZXMgYSBtZWFuaW5nZnVsIHRleHQgY29udGVudGAsIHRoaXMpXG5cdFx0XHR0aGlzLiRkZXN0cm95KClcblx0XHRcdHRoaXMuJGVsLnJlbW92ZSgpXG5cdFx0fVxuXHR9LFxuXG5cdGJlZm9yZVVwZGF0ZSgpIHtcblx0XHR0aGlzLnRleHQgPSB0aGlzLmdldFRleHQoKVxuXHR9LFxuXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC8vICRzbG90cyBhcmUgbm90IHJlYWN0aXZlLlxuXHRcdFx0Ly8gV2UgbmVlZCB0byB1cGRhdGUgIHRoZSBjb250ZW50IG1hbnVhbGx5XG5cdFx0XHR0ZXh0OiB0aGlzLmdldFRleHQoKSxcblx0XHR9XG5cdH0sXG5cblx0Y29tcHV0ZWQ6IHtcblx0XHRpc0xvbmdUZXh0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMudGV4dCAmJiB0aGlzLnRleHQudHJpbSgpLmxlbmd0aCA+IDIwXG5cdFx0fSxcblx0fSxcblxuXHRtZXRob2RzOiB7XG5cdFx0Z2V0VGV4dCgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzbG90cy5kZWZhdWx0ID8gdGhpcy4kc2xvdHMuZGVmYXVsdFswXS50ZXh0LnRyaW0oKSA6ICcnXG5cdFx0fSxcblx0fSxcbn1cbiIsIlxuLyoqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGF1dGhvciBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuaW1wb3J0IGFjdGlvbkdsb2JhbCBmcm9tICcuL2FjdGlvbkdsb2JhbCdcbmltcG9ydCBHZXRQYXJlbnQgZnJvbSAnLi4vdXRpbHMvR2V0UGFyZW50J1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG1peGluczogW2FjdGlvbkdsb2JhbF0sXG5cdHByb3BzOiB7XG5cdFx0LyoqXG5cdFx0ICogSWNvbiB0byBzaG93IHdpdGggdGhlIGFjdGlvbiwgY2FuIGJlIGVpdGhlciBhIENTUyBjbGFzcyBvciBhbiBVUkxcblx0XHQgKi9cblx0XHRpY29uOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFRpdGxlIHRvIHNob3cgbmV4dCB0byB0aGUgaWNvblxuXHRcdCAqL1xuXHRcdHRpdGxlOiB7XG5cdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRkZWZhdWx0OiAnJyxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFdoZXRoZXIgd2UgY2xvc2UgdGhlIEFjdGlvbnMgbWVudSBhZnRlciB0aGUgY2xpY2tcblx0XHQgKi9cblx0XHRjbG9zZUFmdGVyQ2xpY2s6IHtcblx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEFyaWEgbGFiZWwgZm9yIHRoZSBidXR0b24uIE5vdCBuZWVkZWQgaWYgdGhlIGJ1dHRvbiBoYXMgdGV4dC5cblx0XHQgKi9cblx0XHRhcmlhTGFiZWw6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdGRlZmF1bHQ6ICcnLFxuXHRcdH0sXG5cdH0sXG5cblx0Y29tcHV0ZWQ6IHtcblx0XHRpc0ljb25VcmwoKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFVSTCh0aGlzLmljb24pXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdH1cblx0XHR9LFxuXHR9LFxuXG5cdG1ldGhvZHM6IHtcblx0XHRvbkNsaWNrKGV2ZW50KSB7XG5cdFx0XHQvKipcblx0XHRcdCAqIEVtaXR0ZWQgd2hlbiB0aGUgYWN0aW9uIGlzIGNsaWNrZWRcblx0XHRcdCAqIEB0eXBlIHtFdmVudH1cblx0XHRcdCAqL1xuXHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snLCBldmVudClcblxuXHRcdFx0aWYgKHRoaXMuY2xvc2VBZnRlckNsaWNrKSB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudCA9IEdldFBhcmVudCh0aGlzLCAnQWN0aW9ucycpXG5cdFx0XHRcdGlmIChwYXJlbnQgJiYgcGFyZW50LmNsb3NlTWVudSkge1xuXHRcdFx0XHRcdHBhcmVudC5jbG9zZU1lbnUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0fSxcbn1cbiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgeyBJc01vYmlsZVN0YXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvSXNNb2JpbGVTdGF0ZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRpc01vYmlsZTogZmFsc2UsXG5cdFx0fVxuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdElzTW9iaWxlU3RhdGUuJG9uKCdjaGFuZ2VkJywgdGhpcy5vbklzTW9iaWxlQ2hhbmdlZClcblx0XHR0aGlzLmlzTW9iaWxlID0gSXNNb2JpbGVTdGF0ZS5pc01vYmlsZVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdElzTW9iaWxlU3RhdGUuJG9mZignY2hhbmdlZCcsIHRoaXMub25Jc01vYmlsZUNoYW5nZWQpXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRvbklzTW9iaWxlQ2hhbmdlZCh2YWwpIHtcblx0XHRcdHRoaXMuaXNNb2JpbGUgPSB2YWxcblx0XHR9LFxuXHR9LFxufVxuIiwiXG4vKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKi9cblxuY29uc3QgR2VuUmFuZG9tSWQgPSAobGVuZ3RoKSA9PiB7XG5cdHJldHVybiBNYXRoLnJhbmRvbSgpXG5cdFx0LnRvU3RyaW5nKDM2KVxuXHRcdC5yZXBsYWNlKC9bXmEtel0rL2csICcnKVxuXHRcdC5zdWJzdHIoMCwgbGVuZ3RoIHx8IDUpXG59XG5cbmV4cG9ydCBkZWZhdWx0IEdlblJhbmRvbUlkXG4iLCJcbi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG4vKipcbiAqIEdldCB0aGUgZmlyc3QgcGFyZW50IGNvbXBvbmVudCBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbmFtZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0IHRoZSBjb250ZXh0IHRvIHNlYXJjaCBmcm9tICh1c3VhbHkgdGhpcylcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIHRoZSBwYXJlbnQgbmFtZVxuICogQHJldHVybnMge09iamVjdH0gdGhlIHBhcmVudCBjb21wb25lbnRcbiAqL1xuY29uc3QgR2V0UGFyZW50ID0gZnVuY3Rpb24oY29udGV4dCwgbmFtZSkge1xuXHRsZXQgcGFyZW50ID0gY29udGV4dC4kcGFyZW50XG5cdHdoaWxlIChwYXJlbnQpIHtcblx0XHRpZiAocGFyZW50LiRvcHRpb25zLm5hbWUgPT09IG5hbWUpIHtcblx0XHRcdHJldHVybiBwYXJlbnRcblx0XHR9XG5cdFx0cGFyZW50ID0gcGFyZW50LiRwYXJlbnRcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBHZXRQYXJlbnRcbiIsIi8qKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTkgS3Jpc3RvZiBIYW1hbm4sIFBhdWwgU2Nod8O2cmVyXG4gKlxuICogQGF1dGhvciBLcmlzdG9mIEhhbWFublxuICogQGF1dGhvciBQYXVsIFNjaHfDtnJlclxuICpcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcblxuZXhwb3J0IGNvbnN0IElzTW9iaWxlU3RhdGUgPSBuZXcgVnVlKHtcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNNb2JpbGU6IGZhbHNlLFxuXHRcdH1cblx0fSxcblx0d2F0Y2g6IHtcblx0XHRpc01vYmlsZSh2YWwpIHtcblx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZWQnLCB2YWwpXG5cdFx0fSxcblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUpXG5cdFx0dGhpcy5oYW5kbGVXaW5kb3dSZXNpemUoKVxuXHR9LFxuXHRiZWZvcmVEZXN0cm95KCkge1xuXHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVdpbmRvd1Jlc2l6ZSlcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcblx0XHRcdHRoaXMuaXNNb2JpbGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPCAxMDI0XG5cdFx0fSxcblx0fSxcbn0pXG4iLCIvKipcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cbiAqXG4gKiBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqL1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5cbi8qKlxuICogVmFsaWRhdGUgY2hpbGRyZW4gb2YgYSB2dWUgY29tcG9uZW50XG4gKlxuICogQHBhcmFtIHtPYmplY3RbXX0gc2xvdHMgdGhlIHZ1ZSBjb21wb25lbnQgc2xvdFxuICogQHBhcmFtIHtTdHJpbmdbXX0gYWxsb3dlZCB0aGUgYWxsb3dlZCBjb21wb25lbnRzIG5hbWVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2bSB0aGUgdnVlIGNvbXBvbmVudCBpbnN0YW5jZVxuICovXG5jb25zdCBWYWxpZGF0ZVNsb3QgPSAoc2xvdHMsIGFsbG93ZWQsIHZtKSA9PiB7XG5cdGlmIChzbG90cyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRmb3IgKGxldCBpbmRleCA9IHNsb3RzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcblx0XHRjb25zdCBub2RlID0gc2xvdHNbaW5kZXhdXG5cdFx0Ly8gYWxzbyBjaGVjayBhZ2FpbnN0IGFsbG93ZWQgdG8gYXZvaWQgdW5pbml0aWF0ZWQgdm5vZGVzIHdpdGggbm8gY29tcG9uZW50T3B0aW9uc1xuXHRcdGNvbnN0IGlzSHRtbEVsZW1lbnQgPSAhbm9kZS5jb21wb25lbnRPcHRpb25zICYmIG5vZGUudGFnICYmIGFsbG93ZWQuaW5kZXhPZihub2RlLnRhZykgPT09IC0xXG5cdFx0Y29uc3QgaXNWdWVDb21wb25lbnQgPSAhIW5vZGUuY29tcG9uZW50T3B0aW9ucyAmJiB0eXBlb2Ygbm9kZS5jb21wb25lbnRPcHRpb25zLnRhZyA9PT0gJ3N0cmluZydcblx0XHRjb25zdCBpc0ZvcmJpZGRlbkNvbXBvbmVudCA9IGlzVnVlQ29tcG9uZW50ICYmIGFsbG93ZWQuaW5kZXhPZihub2RlLmNvbXBvbmVudE9wdGlvbnMudGFnKSA9PT0gLTFcblxuXHRcdC8vIGlmIGh0bWwgZWxlbWVudCBvciBub3QgYSB2dWUgY29tcG9uZW50IG9yIHZ1ZSBjb21wb25lbnQgbm90IGluIGFsbG93ZWQgdGFnc1xuXHRcdGlmIChpc0h0bWxFbGVtZW50IHx8ICFpc1Z1ZUNvbXBvbmVudCB8fCBpc0ZvcmJpZGRlbkNvbXBvbmVudCkge1xuXHRcdFx0Ly8gb25seSB3YXJuIHdoZW4gaHRtbCBlbG1lbnQgb3IgZm9yYmlkZGVuIGNvbXBvbmVudFxuXHRcdFx0Ly8gc29tZXRpbWVzIHRleHQgbm9kZXMgYXJlIHByZXNlbnQgd2hpY2ggYXJlIGhhcmRseSByZW1vdmVhYmxlIGJ5IHRoZSBkZXZlbG9wZXIgYW5kIHNwYW0gdGhlIHdhcm5pbmdzXG5cdFx0XHRpZiAoaXNIdG1sRWxlbWVudCB8fCBpc0ZvcmJpZGRlbkNvbXBvbmVudCkge1xuXHRcdFx0XHRWdWUudXRpbC53YXJuKGAke2lzSHRtbEVsZW1lbnQgPyBub2RlLnRhZyA6IG5vZGUuY29tcG9uZW50T3B0aW9ucy50YWd9IGlzIG5vdCBhbGxvd2VkIGluc2lkZSB0aGUgJHt2bS4kb3B0aW9ucy5uYW1lfSBjb21wb25lbnRgLCB2bSlcblx0XHRcdH1cblxuXHRcdFx0Ly8gY2xlYW51cFxuXHRcdFx0c2xvdHMuc3BsaWNlKGluZGV4LCAxKVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYWxpZGF0ZVNsb3RcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBuZXh0Y2xvdWQvbDEwbi9kaXN0L2dldHRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLml0ZXJhdG9yLmpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidi1jbGljay1vdXRzaWRlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInYtdG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ2dWVcIik7Il0sInNvdXJjZVJvb3QiOiIifQ==","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/Content\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/Content\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/Content\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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 = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/components/Content/index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=script&lang=js&\":\n/*!*******************************************************************************************************************************************************!*\\\n !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Content/Content.vue?vue&type=script&lang=js& ***!\n \\*******************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n appName: {\n type: String,\n required: true\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true&\":\n/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true& ***!\n \\******************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.content[data-v-37f0357a] {\\n box-sizing: border-box;\\n position: relative;\\n display: flex;\\n padding-top: 50px;\\n min-height: 100%;\\n}\\n.content[data-v-37f0357a] * {\\n box-sizing: border-box;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Content.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACAhB;;;;;;;;;;;;;;;;;;;;EDqBE;AA8CF;EACC,sBAAsB;EACtB,kBAAkB;EAClB,aAAa;EACb,iBAAiB;EACjB,gBAAgB;AAAA;AALjB;IAOE,sBAAsB;AAAA\",\"sourcesContent\":[\"$scope_version:\\\"84c461f\\\"; @import 'variables';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.content {\\n\\tbox-sizing: border-box;\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tpadding-top: 50px;\\n\\tmin-height: 100%;\\n\\t::v-deep * {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/api.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/api.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true&\":\n/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js??ref--1-3!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true& ***!\n \\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_style_index_0_id_37f0357a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true&\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_style_index_0_id_37f0357a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_style_index_0_id_37f0357a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n/***/ }),\n\n/***/ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=template&id=37f0357a&scoped=true&\":\n/*!*********************************************************************************************************************************************************************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Content/Content.vue?vue&type=template&id=37f0357a&scoped=true& ***!\n \\*********************************************************************************************************************************************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"content\",\n class: \"app-\" + _vm.appName.toLowerCase(),\n attrs: { id: \"content-vue\" }\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"./src/components/Content/Content.vue\":\n/*!********************************************!*\\\n !*** ./src/components/Content/Content.vue ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Content.vue?vue&type=template&id=37f0357a&scoped=true& */ \"./src/components/Content/Content.vue?vue&type=template&id=37f0357a&scoped=true&\");\n/* harmony import */ var _Content_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Content.vue?vue&type=script&lang=js& */ \"./src/components/Content/Content.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Content_vue_vue_type_style_index_0_id_37f0357a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true& */ \"./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n/* harmony import */ var _Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Content.vue?vue&type=custom&index=0&blockType=docs */ \"./src/components/Content/Content.vue?vue&type=custom&index=0&blockType=docs\");\n/* harmony import */ var _Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _Content_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"37f0357a\",\n null\n \n)\n\n/* custom blocks */\n\nif (typeof _Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default.a === 'function') _Content_vue_vue_type_custom_index_0_blockType_docs__WEBPACK_IMPORTED_MODULE_4___default()(component)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/Content/Content.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"./src/components/Content/Content.vue?vue&type=custom&index=0&blockType=docs\":\n/*!***********************************************************************************!*\\\n !*** ./src/components/Content/Content.vue?vue&type=custom&index=0&blockType=docs ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Content/Content.vue?vue&type=script&lang=js&\":\n/*!*********************************************************************!*\\\n !*** ./src/components/Content/Content.vue?vue&type=script&lang=js& ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Content.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n/***/ }),\n\n/***/ \"./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true&\":\n/*!******************************************************************************************************!*\\\n !*** ./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true& ***!\n \\******************************************************************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_1_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_style_index_0_id_37f0357a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib??vue-loader-options!./Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true& */ \"./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=style&index=0&id=37f0357a&lang=scss&scoped=true&\");\n/* empty/unused harmony star reexport */\n\n/***/ }),\n\n/***/ \"./src/components/Content/Content.vue?vue&type=template&id=37f0357a&scoped=true&\":\n/*!***************************************************************************************!*\\\n !*** ./src/components/Content/Content.vue?vue&type=template&id=37f0357a&scoped=true& ***!\n \\***************************************************************************************/\n/*! exports provided: render, staticRenderFns */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Content.vue?vue&type=template&id=37f0357a&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Content/Content.vue?vue&type=template&id=37f0357a&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Content_vue_vue_type_template_id_37f0357a_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n/***/ }),\n\n/***/ \"./src/components/Content/index.js\":\n/*!*****************************************!*\\\n !*** ./src/components/Content/index.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Content__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Content */ \"./src/components/Content/Content.vue\");\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Content__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vc3JjL2NvbXBvbmVudHMvQ29udGVudC9Db250ZW50LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQ29udGVudC9Db250ZW50LnZ1ZT9kNDkxIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQ29udGVudC9Db250ZW50LnZ1ZT82ZjQwIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0NvbnRlbnQvQ29udGVudC52dWU/NmFiYSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQ29udGVudC9Db250ZW50LnZ1ZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQ29udGVudC9Db250ZW50LnZ1ZT80Y2NiIiwid2VicGFjazovL05leHRjbG91ZFZ1ZS5bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9Db250ZW50L0NvbnRlbnQudnVlP2M3MzUiLCJ3ZWJwYWNrOi8vTmV4dGNsb3VkVnVlLltuYW1lXS8uL3NyYy9jb21wb25lbnRzL0NvbnRlbnQvQ29udGVudC52dWU/NGRkZSIsIndlYnBhY2s6Ly9OZXh0Y2xvdWRWdWUuW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvQ29udGVudC9pbmRleC5qcyJdLCJuYW1lcyI6WyJDb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25ELENBQUM7QUFDRCxPO1FDVkE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNCQTtBQUNBO0FBQ0E7QUFDQSxrQkFEQTtBQUVBO0FBRkE7QUFEQTtBQURBLEc7Ozs7Ozs7Ozs7OztBQ3ZEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDNEg7QUFDN0I7QUFDL0YsOEJBQThCLG1GQUEyQixDQUFDLHNHQUFxQztBQUMvRjtBQUNBLDhCQUE4QixRQUFTLHNCQUFzQixpakJBQWlqQiwrVkFBK1YsMkJBQTJCLHVCQUF1QixrQkFBa0Isc0JBQXNCLHFCQUFxQixHQUFHLGdDQUFnQyw2QkFBNkIsR0FBRyxTQUFTLCtIQUErSCx5QkFBeUIsTUFBTSxNQUFNLFlBQVksYUFBYSxXQUFXLFlBQVksYUFBYSxLQUFLLE1BQU0sWUFBWSxvREFBb0QscUJBQXFCLGdKQUFnSiwyQkFBMkIsdUJBQXVCLGtCQUFrQixzQkFBc0IscUJBQXFCLGdCQUFnQiw2QkFBNkIsS0FBSyxHQUFHLG9qQkFBb2pCLHNnQkFBc2dCLG1GQUFtRixnSkFBZ0osbUZBQW1GLDJFQUEyRSx3Q0FBd0Msc0JBQXNCLG1CQUFtQixzSUFBc0ksK0ZBQStGLDJCQUEyQixxREFBcUQscUJBQXFCO0FBQ25sSDtBQUNlLHNGQUF1QixFQUFDOzs7Ozs7Ozs7Ozs7O0FDUDFCOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMscUJBQXFCO0FBQ2pFOztBQUVBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixxQkFBcUI7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFOzs7Ozs7Ozs7Ozs7QUNqRWE7O0FBRWIsaUNBQWlDLDJIQUEySDs7QUFFNUosNkJBQTZCLGtLQUFrSzs7QUFFL0wsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFckwsd0NBQXdDLGdGQUFnRixlQUFlLGVBQWUsZ0JBQWdCLG9CQUFvQixNQUFNLDBDQUEwQywrQkFBK0IsYUFBYSxxQkFBcUIsbUNBQW1DLEVBQUUsRUFBRSxjQUFjLFdBQVcsVUFBVSxFQUFFLFVBQVUsTUFBTSxpREFBaUQsRUFBRSxVQUFVLGtCQUFrQixFQUFFLEVBQUUsYUFBYTs7QUFFdmUsK0JBQStCLG9DQUFvQzs7QUFFbkU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdURBQXVELGNBQWM7QUFDckU7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxFOzs7Ozs7Ozs7Ozs7QUMvQkE7QUFBQTtBQUFBO0FBQUE7QUFBK0Y7QUFDL0YsWUFBcVk7O0FBRXJZOztBQUVBO0FBQ0E7O0FBRUEsYUFBYSwwR0FBRyxDQUFDLHVWQUFPOzs7O0FBSVQsc1pBQU8sYUFBYSxFOzs7Ozs7Ozs7Ozs7QUNadEI7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLHdCQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixLQUF3QyxHQUFHLHNCQUFpQixHQUFHLFNBQUk7O0FBRW5GO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLHFFQUFxRSxxQkFBcUIsYUFBYTs7QUFFdkc7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RDtBQUN6RCxHQUFHOztBQUVIOzs7QUFHQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLDRCQUE0QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0IsNkJBQTZCO0FBQ2pEOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7Ozs7QUM1UUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDaEJBO0FBQUE7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2pHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRztBQUN2QztBQUNMO0FBQ3NDOzs7QUFHNUY7QUFDNkY7QUFDN0YsZ0JBQWdCLDJHQUFVO0FBQzFCLEVBQUUsNkVBQU07QUFDUixFQUFFLDhGQUFNO0FBQ1IsRUFBRSx1R0FBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUN5RTtBQUN6RSxXQUFXLDBGQUFNLGlCQUFpQiwwRkFBTTs7QUFFeEM7QUFDQSxJQUFJLEtBQVUsRUFBRSxZQWlCZjtBQUNEO0FBQ2UsZ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0NmO0FBQUE7QUFBQSx3Q0FBNkssQ0FBZ0IsMk9BQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7QUNBak07QUFBQTtBQUFBLHdDOzs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRWVBLCtHQUFmLEUiLCJmaWxlIjoiQ29tcG9uZW50cy9Db250ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJDb21wb25lbnRzL0NvbnRlbnRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiQ29tcG9uZW50cy9Db250ZW50XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIk5leHRjbG91ZFZ1ZVwiXSA9IHJvb3RbXCJOZXh0Y2xvdWRWdWVcIl0gfHwge30sIHJvb3RbXCJOZXh0Y2xvdWRWdWVcIl1bXCJDb21wb25lbnRzL0NvbnRlbnRcIl0gPSBmYWN0b3J5KCk7XG59KSh3aW5kb3csIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2NvbXBvbmVudHMvQ29udGVudC9pbmRleC5qc1wiKTtcbiIsIjwhLS1cbiAtIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE4IENocmlzdG9waCBXdXJzdCA8Y2hyaXN0b3BoQHdpbnplcmhvZi13dXJzdC5hdD5cbiAtXG4gLSBAYXV0aG9yIENocmlzdG9waCBXdXJzdCA8Y2hyaXN0b3BoQHdpbnplcmhvZi13dXJzdC5hdD5cbiAtXG4gLSBAbGljZW5zZSBHTlUgQUdQTCB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb25cbiAtXG4gLSBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuIC0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAtIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuIC0gTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAtXG4gLSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAtIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gLSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAtXG4gLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAtIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gLVxuIC0tPlxuXG48ZG9jcz5cblxuXHQjIyMgR2VuZXJhbCBkZXNjcmlwdGlvblxuXG5cdFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIHRoZSBkZWZhdWx0IGNvbnRhaW5lciBvZiBhbGwgYXBwcy5cblx0SXQgX01VU1RfIGJlIHVzZWQgYXMgdGhlIG1haW4gd3JhcHBlciBvZiB5b3VyIGFwcC5cblx0SXQgaW5jbHVkZXMgdGhlIE5hdmlnYXRpb24sIHRoZSBBcHAgY29udGVudCBhbmQgdGhlIFNpZGViYXIuXG5cblx0IyMjIFN0YW5kYXJkIHVzYWdlXG5cblx0YGBgdnVlXG5cdDx0ZW1wbGF0ZT5cblx0XHQ8Q29udGVudCBhcHAtbmFtZT1cImZvcm1zXCI+XG5cdFx0XHQ8QXBwTmF2aWdhdGlvbj5cblx0XHRcdFx0PEFwcE5hdmlnYXRpb25JdGVtIHRpdGxlPVwiTXkgdGl0bGVcIiBpY29uPVwiaWNvbi1jYXRlZ29yeS1lbmFibGVkXCI+XG5cdFx0XHQ8L0FwcE5hdmlnYXRpb24+XG5cdFx0XHQ8QXBwQ29udGVudD5Zb3VyIG1haW4gYXBwIGNvbnRlbnQgaGVyZTwvQXBwQ29udGVudD5cblx0XHRcdDxBcHBTaWRlYmFyIHRpdGxlPVwiY2F0LXBpY3R1cmUuanBnXCI+PC9BcHBTaWRlYmFyPlxuXHRcdDwvQ29udGVudD5cblx0PC90ZW1wbGF0ZT5cblx0YGBgXG5cbjwvZG9jcz5cblxuPHRlbXBsYXRlPlxuXHQ8ZGl2IGlkPVwiY29udGVudC12dWVcIlxuXHRcdDpjbGFzcz1cImBhcHAtJHthcHBOYW1lLnRvTG93ZXJDYXNlKCl9YFwiXG5cdFx0Y2xhc3M9XCJjb250ZW50XCI+XG5cdFx0PHNsb3QgLz5cblx0PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuXHRwcm9wczoge1xuXHRcdGFwcE5hbWU6IHtcblx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdH0sXG5cdH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuLmNvbnRlbnQge1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHBhZGRpbmctdG9wOiA1MHB4O1xuXHRtaW4taGVpZ2h0OiAxMDAlO1xuXHQ6OnYtZGVlcCAqIHtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHR9XG59XG48L3N0eWxlPlxuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi8qKlxcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE5IEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBhdXRob3IgSm9obiBNb2xha3Zvw6YgPHNram5sZHN2QHByb3Rvbm1haWwuY29tPlxcbiAqXFxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXFxuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXFxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cXG4gKlxcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXFxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAqXFxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXFxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cXG4gKlxcbiAqL1xcbi5jb250ZW50W2RhdGEtdi0zN2YwMzU3YV0ge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBwYWRkaW5nLXRvcDogNTBweDtcXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XFxufVxcbi5jb250ZW50W2RhdGEtdi0zN2YwMzU3YV0gICoge1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9Db250ZW50LnZ1ZVwiLFwid2VicGFjazovLy4vLi4vLi4vYXNzZXRzL3ZhcmlhYmxlcy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RURxQkU7QUE4Q0Y7RUFDQyxzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixpQkFBaUI7RUFDakIsZ0JBQWdCO0FBQUE7QUFMakI7SUFPRSxzQkFBc0I7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIkc2NvcGVfdmVyc2lvbjpcXFwiODRjNDYxZlxcXCI7IEBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuLmNvbnRlbnQge1xcblxcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFx0cG9zaXRpb246IHJlbGF0aXZlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0cGFkZGluZy10b3A6IDUwcHg7XFxuXFx0bWluLWhlaWdodDogMTAwJTtcXG5cXHQ6OnYtZGVlcCAqIHtcXG5cXHRcXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdH1cXG59XFxuXCIsXCIvKipcXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxOSBKb2huIE1vbGFrdm/DpiA8c2tqbmxkc3ZAcHJvdG9ubWFpbC5jb20+XFxuICpcXG4gKiBAYXV0aG9yIEpvaG4gTW9sYWt2b8OmIDxza2pubGRzdkBwcm90b25tYWlsLmNvbT5cXG4gKlxcbiAqIEBsaWNlbnNlIEdOVSBBR1BMIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvblxcbiAqXFxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXFxuICpcXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gKlxcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXFxuICpcXG4gKi9cXG5cXG4vLyBodHRwczovL3V4cGxhbmV0Lm9yZy83LXJ1bGVzLWZvci1tb2JpbGUtdWktYnV0dG9uLWRlc2lnbi1lOWNmMmVhNTQ1NTZcXG4vLyByZWNvbW1lbmRlZCBpcyA0OHB4XFxuLy8gNDRweCBpcyB3aGF0IHdlIGNob29zZSBhbmQgaGF2ZSB2ZXJ5IGdvb2QgdmlzdWFsLXRvLXVzYWJpbGl0eSByYXRpb1xcbiRjbGlja2FibGUtYXJlYTogNDRweDtcXG5cXG4vLyBiYWNrZ3JvdW5kIGljb24gc2l6ZVxcbi8vIGFsc28gdXNlZCBmb3IgdGhlIHNjc3MgaWNvbiBmb250XFxuJGljb24tc2l6ZTogMTZweDtcXG5cXG4vLyBpY29uIHBhZGRpbmcgZm9yIGEgJGNsaWNrYWJsZS1hcmVhIHdpZHRoIGFuZCBhICRpY29uLXNpemUgaWNvblxcbi8vICggNDRweCAtIDE2cHggKSAvIDJcXG4kaWNvbi1tYXJnaW46ICgkY2xpY2thYmxlLWFyZWEgLSAkaWNvbi1zaXplKSAvIDI7XFxuXFxuLy8gdHJhbnNwYXJlbmN5IGJhY2tncm91bmQgZm9yIGljb25zXFxuJGljb24tZm9jdXMtYmc6IHJnYmEoMTI3LCAxMjcsIDEyNywgLjI1KTtcXG5cXG4vLyBwb3BvdmVybWVudSBhcnJvdyB3aWR0aCBmcm9tIHRoZSB0cmlhbmdsZSBjZW50ZXJcXG4kYXJyb3ctd2lkdGg6IDlweDtcXG5cXG4vLyBvcGFjaXRpZXNcXG4kb3BhY2l0eV9kaXNhYmxlZDogLjU7XFxuJG9wYWNpdHlfbm9ybWFsOiAuNztcXG4kb3BhY2l0eV9mdWxsOiAxO1xcblxcbi8vIG1lbnUgcm91bmQgYmFja2dyb3VuZCBob3ZlciBmZWVkYmFja1xcbi8vIGdvb2QgbG9va2luZyBvbiBkYXJrIEFORCB3aGl0ZSBiZ1xcbiRhY3Rpb24tYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgxMjcsIDEyNywgMTI3LCAuMjUpO1xcblxcbi8vIHZhcmlvdXMgc3RydWN0dXJlIGRhdGEgdXNlZCBpbiB0aGUgXFxuLy8gYEFwcE5hdmlnYXRpb25gIGNvbXBvbmVudFxcbiRoZWFkZXItaGVpZ2h0OiA1MHB4O1xcbiRuYXZpZ2F0aW9uLXdpZHRoOiAzMDBweDtcXG5cXG4vLyBtb2JpbGUgYnJlYWtwb2ludFxcbiRicmVha3BvaW50LW1vYmlsZTogMTAyNHB4O1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtdXJsLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMS0zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29udGVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zN2YwMzU3YSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwiY29udGVudFwiLFxuICAgICAgY2xhc3M6IFwiYXBwLVwiICsgX3ZtLmFwcE5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgIGF0dHJzOiB7IGlkOiBcImNvbnRlbnQtdnVlXCIgfVxuICAgIH0sXG4gICAgW192bS5fdChcImRlZmF1bHRcIildLFxuICAgIDJcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAob3B0aW9ucy5mdW5jdGlvbmFsID8gdGhpcy5wYXJlbnQgOiB0aGlzKS4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290XG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb25hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0NvbnRlbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3ZjAzNTdhJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Db250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Db250ZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM3ZjAzNTdhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMzdmMDM1N2FcIixcbiAgbnVsbFxuICBcbilcblxuLyogY3VzdG9tIGJsb2NrcyAqL1xuaW1wb3J0IGJsb2NrMCBmcm9tIFwiLi9Db250ZW50LnZ1ZT92dWUmdHlwZT1jdXN0b20maW5kZXg9MCZibG9ja1R5cGU9ZG9jc1wiXG5pZiAodHlwZW9mIGJsb2NrMCA9PT0gJ2Z1bmN0aW9uJykgYmxvY2swKGNvbXBvbmVudClcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvaG9tZS9sb3Vpcy93b3Jrc3BhY2UvbmV4dGNsb3VkL3Rvb2xzL25leHRjbG91ZC12dWUvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnMzdmMDM1N2EnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnMzdmMDM1N2EnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnMzdmMDM1N2EnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NvbnRlbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM3ZjAzNTdhJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzM3ZjAzNTdhJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvY29tcG9uZW50cy9Db250ZW50L0NvbnRlbnQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29udGVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS11cmwtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0xLTMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db250ZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM3ZjAzNTdhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db250ZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zN2YwMzU3YSZzY29wZWQ9dHJ1ZSZcIiIsIi8qXG4gKiBAY29weXJpZ2h0IDIwMTggQ2hyaXN0b3BoIFd1cnN0IDxjaHJpc3RvcGhAd2luemVyaG9mLXd1cnN0LmF0PlxuICpcbiAqIEBhdXRob3IgMjAxOCBDaHJpc3RvcGggV3Vyc3QgPGNocmlzdG9waEB3aW56ZXJob2Ytd3Vyc3QuYXQ+XG4gKlxuICogQGxpY2Vuc2UgR05VIEFHUEwgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuaW1wb3J0IENvbnRlbnQgZnJvbSAnLi9Db250ZW50J1xuXG5leHBvcnQgZGVmYXVsdCBDb250ZW50XG4iXSwic291cmNlUm9vdCI6IiJ9","/**\n * vue-local-storage v0.6.0\n * (c) 2017 Alexander Avakov\n * @license MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.VueLocalStorage = factory());\n}(this, (function () { 'use strict';\n\nvar VueLocalStorage = function VueLocalStorage () {\n this._properties = {};\n this._namespace = '';\n this._isSupported = true;\n};\n\nvar prototypeAccessors = { namespace: {} };\n\n/**\n * Namespace getter.\n *\n * @returns {string}\n */\nprototypeAccessors.namespace.get = function () {\n return this._namespace\n};\n\n/**\n * Namespace setter.\n *\n * @param {string} value\n */\nprototypeAccessors.namespace.set = function (value) {\n this._namespace = value ? (value + \".\") : '';\n};\n\n/**\n * Concatenates localStorage key with namespace prefix.\n *\n * @param {string} lsKey\n * @returns {string}\n * @private\n */\nVueLocalStorage.prototype._getLsKey = function _getLsKey (lsKey) {\n return (\"\" + (this._namespace) + lsKey)\n};\n\n/**\n * Set a value to localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @param {*} rawValue\n * @param {*} type\n * @private\n */\nVueLocalStorage.prototype._lsSet = function _lsSet (lsKey, rawValue, type) {\n var key = this._getLsKey(lsKey);\n var value = type && [Array, Object].includes(type)\n ? JSON.stringify(rawValue)\n : rawValue;\n\n window.localStorage.setItem(key, value);\n};\n\n/**\n * Get value from localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @returns {any}\n * @private\n */\nVueLocalStorage.prototype._lsGet = function _lsGet (lsKey) {\n var key = this._getLsKey(lsKey);\n\n return window.localStorage[key]\n};\n\n/**\n * Get value from localStorage\n *\n * @param {String} lsKey\n * @param {*} defaultValue\n * @param {*} defaultType\n * @returns {*}\n */\nVueLocalStorage.prototype.get = function get (lsKey, defaultValue, defaultType) {\n var this$1 = this;\n if ( defaultValue === void 0 ) defaultValue = null;\n if ( defaultType === void 0 ) defaultType = String;\n\n if (!this._isSupported) {\n return null\n }\n\n if (this._lsGet(lsKey)) {\n var type = defaultType;\n\n for (var key in this$1._properties) {\n if (key === lsKey) {\n type = this$1._properties[key].type;\n break\n }\n }\n\n return this._process(type, this._lsGet(lsKey))\n }\n\n return defaultValue !== null ? defaultValue : null\n};\n\n/**\n * Set localStorage value\n *\n * @param {String} lsKey\n * @param {*} value\n * @returns {*}\n */\nVueLocalStorage.prototype.set = function set (lsKey, value) {\n var this$1 = this;\n\n if (!this._isSupported) {\n return null\n }\n\n for (var key in this$1._properties) {\n var type = this$1._properties[key].type;\n\n if ((key === lsKey)) {\n this$1._lsSet(lsKey, value, type);\n\n return value\n }\n }\n\n this._lsSet(lsKey, value);\n\n return value\n};\n\n/**\n * Remove value from localStorage\n *\n * @param {String} lsKey\n */\nVueLocalStorage.prototype.remove = function remove (lsKey) {\n if (!this._isSupported) {\n return null\n }\n\n return window.localStorage.removeItem(lsKey)\n};\n\n/**\n * Add new property to localStorage\n *\n * @param {String} key\n * @param {function} type\n * @param {*} defaultValue\n */\nVueLocalStorage.prototype.addProperty = function addProperty (key, type, defaultValue) {\n if ( defaultValue === void 0 ) defaultValue = undefined;\n\n type = type || String;\n\n this._properties[key] = { type: type };\n\n if (!this._lsGet(key) && defaultValue !== null) {\n this._lsSet(key, defaultValue, type);\n }\n};\n\n/**\n * Process the value before return it from localStorage\n *\n * @param {String} type\n * @param {*} value\n * @returns {*}\n * @private\n */\nVueLocalStorage.prototype._process = function _process (type, value) {\n switch (type) {\n case Boolean:\n return value === 'true'\n case Number:\n return parseFloat(value)\n case Array:\n try {\n var array = JSON.parse(value);\n\n return Array.isArray(array) ? array : []\n } catch (e) {\n return []\n }\n case Object:\n try {\n return JSON.parse(value)\n } catch (e) {\n return {}\n }\n default:\n return value\n }\n};\n\nObject.defineProperties( VueLocalStorage.prototype, prototypeAccessors );\n\nvar vueLocalStorage = new VueLocalStorage();\n\nvar index = {\n /**\n * Install vue-local-storage plugin\n *\n * @param {Vue} Vue\n * @param {Object} options\n */\n install: function (Vue, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof process !== 'undefined' &&\n (\n process.server ||\n process.SERVER_BUILD ||\n (process.env && process.env.VUE_ENV === 'server')\n )\n ) {\n return\n }\n\n var isSupported = true;\n\n try {\n var test = '__vue-localstorage-test__';\n\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n } catch (e) {\n isSupported = false;\n vueLocalStorage._isSupported = false;\n\n console.error('Local storage is not supported');\n }\n\n var name = options.name || 'localStorage';\n var bind = options.bind;\n\n if (options.namespace) {\n vueLocalStorage.namespace = options.namespace;\n }\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n var this$1 = this;\n\n if (!isSupported) {\n return\n }\n\n if (this.$options[name]) {\n Object.keys(this.$options[name]).forEach(function (key) {\n var config = this$1.$options[name][key];\n var ref = [config.type, config.default];\n var type = ref[0];\n var defaultValue = ref[1];\n\n vueLocalStorage.addProperty(key, type, defaultValue);\n\n var existingProp = Object.getOwnPropertyDescriptor(vueLocalStorage, key);\n\n if (!existingProp) {\n var prop = {\n get: function () { return Vue.localStorage.get(key, defaultValue); },\n set: function (val) { return Vue.localStorage.set(key, val); },\n configurable: true\n };\n\n Object.defineProperty(vueLocalStorage, key, prop);\n Vue.util.defineReactive(vueLocalStorage, key, defaultValue);\n } else if (!Vue.config.silent) {\n console.log((key + \": is already defined and will be reused\"));\n }\n\n if ((bind || config.bind) && config.bind !== false) {\n this$1.$options.computed = this$1.$options.computed || {};\n\n if (!this$1.$options.computed[key]) {\n this$1.$options.computed[key] = {\n get: function () { return Vue.localStorage[key]; },\n set: function (val) { Vue.localStorage[key] = val; }\n };\n }\n }\n });\n }\n }\n });\n\n Vue[name] = vueLocalStorage;\n Vue.prototype[(\"$\" + name)] = vueLocalStorage;\n }\n};\n\nreturn index;\n\n})));\n"],"sourceRoot":""} |