{ "version": 3, "sources": ["elm:/tmp/build_91287e34/app/javascript/Decider.elm", "../../../node_modules/lodash.debounce/index.js", "../../../node_modules/email-validator/index.js", "elm:/tmp/build_91287e34/app/javascript/Main.elm", "../../../node_modules/lodash/isObject.js", "../../../node_modules/lodash/_freeGlobal.js", "../../../node_modules/lodash/_root.js", "../../../node_modules/lodash/now.js", "../../../node_modules/lodash/_trimmedEndIndex.js", "../../../node_modules/lodash/_baseTrim.js", "../../../node_modules/lodash/_Symbol.js", "../../../node_modules/lodash/_getRawTag.js", "../../../node_modules/lodash/_objectToString.js", "../../../node_modules/lodash/_baseGetTag.js", "../../../node_modules/lodash/isObjectLike.js", "../../../node_modules/lodash/isSymbol.js", "../../../node_modules/lodash/toNumber.js", "../../../node_modules/lodash/debounce.js", "../../../node_modules/lodash/throttle.js", "elm:/tmp/build_91287e34/app/javascript/DocumentSearch.elm", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/index.js", "../../../node_modules/@uppy/utils/lib/hasProperty.js", "../../../node_modules/@uppy/utils/lib/Translator.js", "../../../node_modules/namespace-emitter/index.js", "../../../node_modules/cuid/lib/pad.js", "../../../node_modules/cuid/lib/fingerprint.browser.js", "../../../node_modules/cuid/lib/getRandomValue.browser.js", "../../../node_modules/cuid/index.js", "../../../node_modules/lodash.throttle/index.js", "../../../node_modules/@transloadit/prettier-bytes/prettierBytes.js", "../../../node_modules/wildcard/index.js", "../../../node_modules/mime-match/index.js", "../../../node_modules/@uppy/store-default/lib/index.js", "../../../node_modules/@uppy/utils/lib/getFileNameAndExtension.js", "../../../node_modules/@uppy/utils/lib/mimeTypes.js", "../../../node_modules/@uppy/utils/lib/getFileType.js", "../../../node_modules/@uppy/utils/lib/generateFileID.js", "../../../node_modules/@uppy/utils/lib/findIndex.js", "../../../node_modules/@uppy/core/lib/supportsUploadProgress.js", "../../../node_modules/@uppy/utils/lib/getTimeStamp.js", "../../../node_modules/@uppy/core/lib/loggers.js", "../../../node_modules/preact/src/vnode.js", "../../../node_modules/preact/src/h.js", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/render-queue.js", "../../../node_modules/preact/src/vdom/index.js", "../../../node_modules/preact/src/dom/index.js", "../../../node_modules/preact/src/vdom/diff.js", "../../../node_modules/preact/src/vdom/component-recycler.js", "../../../node_modules/preact/src/vdom/component.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/preact.js", "../../../node_modules/@uppy/utils/lib/isDOMElement.js", "../../../node_modules/@uppy/utils/lib/findDOMElement.js", "../../../node_modules/@uppy/core/lib/Plugin.js", "../../../node_modules/@uppy/core/lib/index.js", "../../../node_modules/@uppy/companion-client/lib/AuthError.js", "../../../node_modules/@uppy/utils/lib/NetworkError.js", "../../../node_modules/@uppy/utils/lib/fetchWithNetworkError.js", "../../../node_modules/@uppy/companion-client/lib/RequestClient.js", "../../../node_modules/qs-stringify/index.js", "../../../node_modules/requires-port/index.js", "../../../node_modules/querystringify/index.js", "../../../node_modules/url-parse/index.js", "../../../node_modules/@uppy/companion-client/lib/tokenStorage.js", "../../../node_modules/@uppy/companion-client/lib/Provider.js", "../../../node_modules/@uppy/companion-client/lib/SearchProvider.js", "../../../node_modules/@uppy/companion-client/lib/Socket.js", "../../../node_modules/@uppy/companion-client/lib/index.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/AuthView.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/User.js", "../../../node_modules/@uppy/provider-views/lib/Breadcrumbs.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/Header.js", "../../../node_modules/classnames/index.js", "../../../node_modules/@uppy/provider-views/lib/Filter.js", "../../../node_modules/@uppy/utils/lib/remoteFileObjToLocal.js", "../../../node_modules/@uppy/provider-views/lib/Item/components/ItemIcon.js", "../../../node_modules/@uppy/provider-views/lib/Item/components/GridLi.js", "../../../node_modules/@uppy/provider-views/lib/Item/components/ListLi.js", "../../../node_modules/@uppy/provider-views/lib/Item/index.js", "../../../node_modules/@uppy/provider-views/lib/ItemList.js", "../../../node_modules/@uppy/provider-views/lib/FooterActions.js", "../../../node_modules/@uppy/provider-views/lib/Browser.js", "../../../node_modules/@uppy/provider-views/lib/Loader.js", "../../../node_modules/@uppy/utils/lib/isPreviewSupported.js", "../../../node_modules/@uppy/provider-views/lib/SharedHandler.js", "../../../node_modules/@uppy/provider-views/lib/CloseWrapper.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/ProviderView.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/index.js", "../../../node_modules/@uppy/provider-views/lib/SearchProviderView/InputView.js", "../../../node_modules/@uppy/provider-views/lib/SearchProviderView/Header.js", "../../../node_modules/@uppy/provider-views/lib/SearchProviderView/SearchProviderView.js", "../../../node_modules/@uppy/provider-views/lib/SearchProviderView/index.js", "../../../node_modules/@uppy/provider-views/lib/index.js", "../../../node_modules/@uppy/store-redux/lib/index.js", "../../../node_modules/is-shallow-equal/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js", "../../../node_modules/@uppy/dashboard/lib/components/FilePreview.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js", "../../../node_modules/@uppy/utils/lib/truncateString.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/index.js", "../../../node_modules/@uppy/dashboard/lib/components/VirtualList.js", "../../../node_modules/@uppy/dashboard/lib/components/FileList.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFiles.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js", "../../../node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js", "../../../node_modules/@uppy/dashboard/lib/components/EditorPanel.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js", "../../../node_modules/@uppy/dashboard/lib/components/FileCard/index.js", "../../../node_modules/@uppy/dashboard/lib/components/Slide.js", "../../../node_modules/@uppy/utils/lib/isDragDropSupported.js", "../../../node_modules/@uppy/dashboard/lib/components/Dashboard.js", "../../../node_modules/@uppy/status-bar/lib/StatusBarStates.js", "../../../node_modules/@uppy/utils/lib/secondsToTime.js", "../../../node_modules/@uppy/utils/lib/prettyETA.js", "../../../node_modules/@uppy/status-bar/lib/StatusBar.js", "../../../node_modules/@uppy/utils/lib/getSpeed.js", "../../../node_modules/@uppy/utils/lib/getBytesRemaining.js", "../../../node_modules/@uppy/utils/lib/getTextDirection.js", "../../../node_modules/@uppy/status-bar/lib/index.js", "../../../node_modules/@uppy/informer/lib/index.js", "../../../node_modules/@uppy/utils/lib/dataURItoBlob.js", "../../../node_modules/@uppy/utils/lib/isObjectURL.js", "../../../node_modules/math-log2/index.js", "../../../node_modules/exifr/dist/mini.legacy.umd.js", "../../../node_modules/@uppy/thumbnail-generator/lib/index.js", "../../../node_modules/@uppy/utils/lib/findAllDOMElements.js", "../../../node_modules/@uppy/utils/lib/toArray.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getRelativePath.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js", "../../../node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js", "../../../node_modules/@uppy/dashboard/lib/utils/trapFocus.js", "../../../node_modules/resize-observer-polyfill/dist/ResizeObserver.js", "../../../node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js", "../../../node_modules/memoize-one/dist/memoize-one.cjs.js", "../../../node_modules/@uppy/dashboard/lib/index.js", "../../../node_modules/@uppy/drag-drop/lib/index.js", "../../../node_modules/@uppy/drop-target/lib/index.js", "../../../node_modules/@uppy/file-input/lib/index.js", "../../../node_modules/@uppy/progress-bar/lib/index.js", "../../../node_modules/cropperjs/dist/cropper.js", "../../../node_modules/@uppy/image-editor/lib/Editor.js", "../../../node_modules/@uppy/image-editor/lib/index.js", "../../../node_modules/@uppy/dropbox/lib/index.js", "../../../node_modules/@uppy/google-drive/lib/DriveProviderViews.js", "../../../node_modules/@uppy/google-drive/lib/index.js", "../../../node_modules/@uppy/instagram/lib/index.js", "../../../node_modules/@uppy/onedrive/lib/index.js", "../../../node_modules/@uppy/box/lib/index.js", "../../../node_modules/@uppy/facebook/lib/index.js", "../../../node_modules/@uppy/unsplash/lib/index.js", "../../../node_modules/@uppy/url/lib/UrlUI.js", "../../../node_modules/@uppy/url/lib/utils/forEachDroppedOrPastedUrl.js", "../../../node_modules/@uppy/url/lib/index.js", "../../../node_modules/@uppy/utils/lib/getFileTypeExtension.js", "../../../node_modules/@uppy/utils/lib/canvasToBlob.js", "../../../node_modules/@uppy/webcam/lib/supportsMediaRecorder.js", "../../../node_modules/@uppy/webcam/lib/CameraIcon.js", "../../../node_modules/@uppy/webcam/lib/SnapshotButton.js", "../../../node_modules/@uppy/webcam/lib/RecordButton.js", "../../../node_modules/@uppy/webcam/lib/formatSeconds.js", "../../../node_modules/@uppy/webcam/lib/RecordingLength.js", "../../../node_modules/@uppy/webcam/lib/VideoSourceSelect.js", "../../../node_modules/@uppy/webcam/lib/SubmitButton.js", "../../../node_modules/@uppy/webcam/lib/DiscardButton.js", "../../../node_modules/@uppy/webcam/lib/CameraScreen.js", "../../../node_modules/@uppy/webcam/lib/PermissionsScreen.js", "../../../node_modules/@uppy/webcam/lib/index.js", "../../../node_modules/@uppy/screen-capture/lib/ScreenRecIcon.js", "../../../node_modules/@uppy/screen-capture/lib/RecordButton.js", "../../../node_modules/@uppy/screen-capture/lib/SubmitButton.js", "../../../node_modules/@uppy/screen-capture/lib/StopWatch.js", "../../../node_modules/@uppy/screen-capture/lib/StreamStatus.js", "../../../node_modules/@uppy/screen-capture/lib/CaptureScreen.js", "../../../node_modules/@uppy/screen-capture/lib/index.js", "../../../node_modules/@uppy/utils/lib/RateLimitedQueue.js", "../../../node_modules/@uppy/utils/lib/settle.js", "../../../node_modules/@uppy/utils/lib/emitSocketProgress.js", "../../../node_modules/@uppy/utils/lib/getSocketHost.js", "../../../node_modules/@uppy/utils/lib/EventTracker.js", "../../../node_modules/@uppy/utils/lib/ProgressTimeout.js", "../../../node_modules/@uppy/utils/lib/isNetworkError.js", "../../../node_modules/@uppy/aws-s3/lib/MiniXHRUpload.js", "../../../node_modules/@uppy/aws-s3/lib/isXml.js", "../../../node_modules/@uppy/aws-s3/lib/index.js", "../../../node_modules/abortcontroller-polyfill/dist/abortcontroller.js", "../../../node_modules/@uppy/utils/lib/AbortController.js", "../../../node_modules/@uppy/utils/lib/delay.js", "../../../node_modules/@uppy/aws-s3-multipart/lib/MultipartUploader.js", "../../../node_modules/@uppy/aws-s3-multipart/lib/index.js", "../../../node_modules/js-base64/base64.js", "../../../node_modules/tus-js-client/lib.es5/error.js", "../../../node_modules/tus-js-client/lib.es5/logger.js", "../../../node_modules/tus-js-client/lib.es5/uuid.js", "../../../node_modules/tus-js-client/lib.es5/upload.js", "../../../node_modules/tus-js-client/lib.es5/noopUrlStorage.js", "../../../node_modules/tus-js-client/lib.es5/browser/urlStorage.js", "../../../node_modules/tus-js-client/lib.es5/browser/httpStack.js", "../../../node_modules/tus-js-client/lib.es5/browser/isReactNative.js", "../../../node_modules/tus-js-client/lib.es5/browser/uriToBlob.js", "../../../node_modules/tus-js-client/lib.es5/browser/sources/isCordova.js", "../../../node_modules/tus-js-client/lib.es5/browser/sources/readAsByteArray.js", "../../../node_modules/tus-js-client/lib.es5/browser/sources/FileSource.js", "../../../node_modules/tus-js-client/lib.es5/browser/sources/StreamSource.js", "../../../node_modules/tus-js-client/lib.es5/browser/fileReader.js", "../../../node_modules/tus-js-client/lib.es5/browser/fingerprint.js", "../../../node_modules/tus-js-client/lib.es5/browser/index.js", "../../../node_modules/@uppy/tus/lib/getFingerprint.js", "../../../node_modules/@uppy/tus/lib/index.js", "../../../node_modules/@uppy/transloadit/node_modules/component-emitter/index.js", "../../../node_modules/@uppy/transloadit/lib/parseUrl.js", "../../../node_modules/parseuri/index.js", "../../../node_modules/ms/index.js", "../../../node_modules/debug/src/debug.js", "../../../node_modules/debug/src/browser.js", "../../../node_modules/socket.io-client/lib/url.js", "../../../node_modules/socket.io-parser/node_modules/component-emitter/index.js", "../../../node_modules/isarray/index.js", "../../../node_modules/socket.io-parser/is-buffer.js", "../../../node_modules/socket.io-parser/binary.js", "../../../node_modules/socket.io-parser/index.js", "../../../node_modules/has-cors/index.js", "../../../node_modules/engine.io-client/lib/xmlhttprequest.js", "../../../node_modules/engine.io-parser/lib/keys.js", "../../../node_modules/has-binary2/index.js", "../../../node_modules/arraybuffer.slice/index.js", "../../../node_modules/after/index.js", "../../../node_modules/engine.io-parser/lib/utf8.js", "../../../node_modules/base64-arraybuffer/lib/base64-arraybuffer.js", "../../../node_modules/blob/index.js", "../../../node_modules/engine.io-parser/lib/browser.js", "../../../node_modules/component-emitter/index.js", "../../../node_modules/engine.io-client/lib/transport.js", "../../../node_modules/parseqs/index.js", "../../../node_modules/component-inherit/index.js", "../../../node_modules/yeast/index.js", "../../../node_modules/engine.io-client/lib/transports/polling.js", "../../../node_modules/engine.io-client/lib/transports/polling-xhr.js", "../../../node_modules/engine.io-client/lib/transports/polling-jsonp.js", "../../../node_modules/engine.io-client/lib/transports/websocket.js", "../../../node_modules/engine.io-client/lib/transports/index.js", "../../../node_modules/indexof/index.js", "../../../node_modules/engine.io-client/lib/socket.js", "../../../node_modules/engine.io-client/lib/index.js", "../../../node_modules/to-array/index.js", "../../../node_modules/socket.io-client/lib/on.js", "../../../node_modules/component-bind/index.js", "../../../node_modules/socket.io-client/lib/socket.js", "../../../node_modules/backo2/index.js", "../../../node_modules/socket.io-client/lib/manager.js", "../../../node_modules/socket.io-client/lib/index.js", "../../../node_modules/@uppy/transloadit/lib/Assembly.js", "../../../node_modules/@uppy/transloadit/lib/Client.js", "../../../node_modules/@uppy/transloadit/lib/AssemblyOptions.js", "../../../node_modules/@uppy/transloadit/lib/AssemblyWatcher.js", "../../../node_modules/@uppy/transloadit/lib/index.js", "../../../node_modules/@uppy/xhr-upload/lib/index.js", "../../../node_modules/get-form-data/lib/index.js", "../../../node_modules/@uppy/form/lib/index.js", "../../../node_modules/@uppy/golden-retriever/lib/ServiceWorkerStore.js", "../../../node_modules/@uppy/golden-retriever/lib/IndexedDBStore.js", "../../../node_modules/@uppy/golden-retriever/lib/MetaDataStore.js", "../../../node_modules/@uppy/golden-retriever/lib/index.js", "../../../node_modules/@uppy/redux-dev-tools/lib/index.js", "../../../node_modules/local-time/app/assets/javascripts/local-time.js", "../../../node_modules/browser-update/update.npm.full.js", "../../../node_modules/csrf-xhr/csrf-xhr.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/anchor_frame_driver_controller.js", "../../javascript/controllers/anchor_styler_controller.js", "../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../node_modules/@rails/request.js/src/fetch_request.js", "../../../node_modules/@rails/request.js/src/verbs.js", "../../javascript/controllers/autodesk_viewer_controller.js", "../../../node_modules/@dicebear/core/lib/utils/escape.js", "../../../node_modules/@dicebear/core/lib/utils/license.js", "../../../node_modules/@dicebear/core/lib/utils/prng.js", "../../../node_modules/@dicebear/core/lib/utils/svg.js", "../../../node_modules/@dicebear/core/lib/schema.js", "../../../node_modules/@dicebear/core/lib/utils/options.js", "../../../node_modules/@dicebear/core/lib/utils/color.js", "../../../node_modules/@dicebear/core/lib/core.js", "../../../node_modules/@dicebear/initials/lib/index.js", "../../../node_modules/@dicebear/initials/lib/utils/initials.js", "../../../node_modules/@dicebear/initials/lib/utils/convertColor.js", "../../../node_modules/@dicebear/initials/lib/utils/escape.js", "../../../node_modules/@dicebear/initials/lib/schema.js", "../../javascript/controllers/avatar_controller.js", "../../javascript/controllers/content_loader_controller.js", "../../javascript/controllers/conversation_starter_controller.js", "../../javascript/controllers/decider_app_initializer_controller.js", "inline-worker:__inline-worker", "../../javascript/sha1Js/sha1.worker.js", "../../javascript/sha1Js/sha1.js", "../../javascript/controllers/dropzone_controller.js", "../../javascript/controllers/email_input_controller.js", "../../../node_modules/hyperhtml/esm.js", "../../javascript/controllers/fixed_bottom_controller.js", "../../javascript/controllers/flexible_clipboard_controller.js", "../../javascript/controllers/frame_loader_controller.js", "../../javascript/controllers/group_validator_controller.js", "../../javascript/controllers/hello_controller.js", "../../javascript/controllers/hover_card_controller.js", "../../javascript/controllers/inner_controller.js", "../../javascript/controllers/main_app_initializer_controller.js", "../../javascript/controllers/mark_as_read_controller.js", "../../../node_modules/@popperjs/core/lib/index.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper-lite.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/bootstrap/js/src/dom/data.js", "../../../node_modules/bootstrap/js/src/util/index.js", "../../../node_modules/bootstrap/js/src/dom/event-handler.js", "../../../node_modules/bootstrap/js/src/dom/manipulator.js", "../../../node_modules/bootstrap/js/src/util/config.js", "../../../node_modules/bootstrap/js/src/base-component.js", "../../../node_modules/bootstrap/js/src/dom/selector-engine.js", "../../../node_modules/bootstrap/js/src/util/component-functions.js", "../../../node_modules/bootstrap/js/src/alert.js", "../../../node_modules/bootstrap/js/src/button.js", "../../../node_modules/bootstrap/js/src/util/swipe.js", "../../../node_modules/bootstrap/js/src/carousel.js", "../../../node_modules/bootstrap/js/src/collapse.js", "../../../node_modules/bootstrap/js/src/dropdown.js", "../../../node_modules/bootstrap/js/src/util/backdrop.js", "../../../node_modules/bootstrap/js/src/util/focustrap.js", "../../../node_modules/bootstrap/js/src/util/scrollbar.js", "../../../node_modules/bootstrap/js/src/modal.js", "../../../node_modules/bootstrap/js/src/offcanvas.js", "../../../node_modules/bootstrap/js/src/util/sanitizer.js", "../../../node_modules/bootstrap/js/src/util/template-factory.js", "../../../node_modules/bootstrap/js/src/tooltip.js", "../../../node_modules/bootstrap/js/src/popover.js", "../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../node_modules/bootstrap/js/src/tab.js", "../../../node_modules/bootstrap/js/src/toast.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/pagy_controller.js", "../../javascript/controllers/pagy_streams_controller.js", "../../javascript/controllers/plugin_document_search_initializer_controller.js", "../../javascript/controllers/renotification_controller.js", "../../javascript/controllers/show_on_hover_controller.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../javascript/controllers/slideshow_controller.js", "../../javascript/controllers/submit_controller.js", "../../javascript/controllers/tabs_controller.js", "../../../node_modules/tippy.js/src/constants.ts", "../../../node_modules/tippy.js/src/utils.ts", "../../../node_modules/tippy.js/src/dom-utils.ts", "../../../node_modules/tippy.js/src/bindGlobalEventListeners.ts", "../../../node_modules/tippy.js/src/browser.ts", "../../../node_modules/tippy.js/src/validation.ts", "../../../node_modules/tippy.js/src/props.ts", "../../../node_modules/tippy.js/src/template.ts", "../../../node_modules/tippy.js/src/createTippy.ts", "../../../node_modules/tippy.js/src/index.ts", "../../../node_modules/tippy.js/src/addons/createSingleton.ts", "../../../node_modules/tippy.js/src/addons/delegate.ts", "../../../node_modules/tippy.js/src/plugins/animateFill.ts", "../../../node_modules/tippy.js/src/plugins/followCursor.ts", "../../../node_modules/tippy.js/src/plugins/inlinePositioning.ts", "../../../node_modules/tippy.js/src/plugins/sticky.ts", "../../../node_modules/tippy.js/build/base.js", "../../javascript/controllers/tippy_controller.js", "../../javascript/controllers/toggle_controller.js", "../../javascript/controllers/trigger_turbo_frame_controller.js", "../../../node_modules/uppy/index.mjs", "../../javascript/fileUpload.js", "../../javascript/controllers/uppy_initializer_controller.js", "../../javascript/controllers/index.js", "../../../node_modules/trix/src/trix/config/attachments.js", "../../../node_modules/trix/src/trix/config/block_attributes.js", "../../../node_modules/trix/src/trix/config/browser.js", "../../../node_modules/trix/src/trix/config/lang.js", "../../../node_modules/trix/src/trix/config/file_size_formatting.js", "../../../node_modules/trix/src/trix/constants.js", "../../../node_modules/trix/src/trix/core/helpers/extend.js", "../../../node_modules/trix/src/trix/core/helpers/dom.js", "../../../node_modules/trix/src/trix/config/input.js", "../../../node_modules/trix/src/trix/config/key_names.js", "../../../node_modules/trix/src/trix/config/parser.js", "../../../node_modules/trix/src/trix/config/text_attributes.js", "../../../node_modules/trix/src/trix/config/toolbar.js", "../../../node_modules/trix/src/trix/config/undo.js", "../../../node_modules/trix/src/trix/config/css.js", "../../../node_modules/trix/src/trix/core/basic_object.js", "../../../node_modules/trix/src/trix/core/utilities/utf16_string.js", "../../../node_modules/trix/src/trix/core/object.js", "../../../node_modules/trix/src/trix/core/helpers/arrays.js", "../../../node_modules/trix/src/trix/core/helpers/bidi.js", "../../../node_modules/trix/src/trix/core/helpers/config.js", "../../../node_modules/trix/src/trix/core/helpers/custom_elements.js", "../../../node_modules/trix/src/trix/core/helpers/events.js", "../../../node_modules/trix/src/trix/core/helpers/functions.js", "../../../node_modules/trix/src/trix/core/helpers/objects.js", "../../../node_modules/trix/src/trix/core/helpers/ranges.js", "../../../node_modules/trix/src/trix/observers/selection_change_observer.js", "../../../node_modules/trix/src/trix/core/helpers/strings.js", "../../../node_modules/trix/src/trix/core/collections/hash.js", "../../../node_modules/trix/src/trix/core/collections/object_group.js", "../../../node_modules/trix/src/trix/core/collections/object_map.js", "../../../node_modules/trix/src/trix/core/collections/element_store.js", "../../../node_modules/trix/src/trix/core/utilities/operation.js", "../../../node_modules/trix/src/trix/views/object_view.js", "../../../node_modules/trix/src/trix/models/html_sanitizer.js", "../../../node_modules/trix/src/trix/views/attachment_view.js", "../../../node_modules/trix/src/trix/views/previewable_attachment_view.js", "../../../node_modules/trix/src/trix/views/piece_view.js", "../../../node_modules/trix/src/trix/views/text_view.js", "../../../node_modules/trix/src/trix/views/block_view.js", "../../../node_modules/trix/src/trix/views/document_view.js", "../../../node_modules/trix/src/trix/models/piece.js", "../../../node_modules/trix/src/trix/operations/image_preload_operation.js", "../../../node_modules/trix/src/trix/models/attachment.js", "../../../node_modules/trix/src/trix/models/attachment_piece.js", "../../../node_modules/trix/src/trix/models/string_piece.js", "../../../node_modules/trix/src/trix/models/splittable_list.js", "../../../node_modules/trix/src/trix/models/text.js", "../../../node_modules/trix/src/trix/models/block.js", "../../../node_modules/trix/src/trix/models/document.js", "../../../node_modules/trix/src/trix/models/html_parser.js", "../../../node_modules/trix/src/trix/core/serialization.js", "../../../node_modules/trix/src/trix/models/managed_attachment.js", "../../../node_modules/trix/src/trix/models/attachment_manager.js", "../../../node_modules/trix/src/trix/models/line_break_insertion.js", "../../../node_modules/trix/src/trix/models/composition.js", "../../../node_modules/trix/src/trix/models/undo_manager.js", "../../../node_modules/trix/src/trix/filters/filter.js", "../../../node_modules/trix/src/trix/filters/attachment_gallery_filter.js", "../../../node_modules/trix/src/trix/models/editor.js", "../../../node_modules/trix/src/trix/models/location_mapper.js", "../../../node_modules/trix/src/trix/models/point_mapper.js", "../../../node_modules/trix/src/trix/models/selection_manager.js", "../../../node_modules/trix/src/trix/controllers/attachment_editor_controller.js", "../../../node_modules/trix/src/trix/controllers/composition_controller.js", "../../../node_modules/trix/src/trix/controllers/controller.js", "../../../node_modules/trix/src/trix/observers/mutation_observer.js", "../../../node_modules/trix/src/trix/operations/file_verification_operation.js", "../../../node_modules/trix/src/trix/models/flaky_android_keyboard_detector.js", "../../../node_modules/trix/src/trix/controllers/input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_0_input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_2_input_controller.js", "../../../node_modules/trix/src/trix/controllers/toolbar_controller.js", "../../../node_modules/trix/src/trix/controllers/editor_controller.js", "../../../node_modules/trix/src/trix/elements/trix_toolbar_element.js", "../../../node_modules/trix/src/trix/elements/trix_editor_element.js", "../../../node_modules/trix/src/trix/trix.js", "../../javascript/trix/trix_attachments.js", "../../javascript/trix/trix_toolbar.js", "../../javascript/application.js"], "sourcesContent": ["(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\nconsole.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**_UNUSED/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**_UNUSED/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0_UNUSED = 0;\nvar _Utils_Tuple0 = { $: '#0' };\n\nfunction _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr_UNUSED(c) { return c; }\nfunction _Utils_chr(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil_UNUSED = { $: 0 };\nvar _List_Nil = { $: '[]' };\n\nfunction _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash_UNUSED(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.start.line === region.end.line)\n\t{\n\t\treturn 'on line ' + region.start.line;\n\t}\n\treturn 'on lines ' + region.start.line + ' through ' + region.end.line;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap(value) { return value.a; }\n\nfunction _Json_wrap_UNUSED(value) { return value; }\nfunction _Json_unwrap_UNUSED(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**_UNUSED/\n\tvar node = args['node'];\n\t//*/\n\t/**/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tmessage: func(record.message),\n\t\tstopPropagation: record.stopPropagation,\n\t\tpreventDefault: record.preventDefault\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.message;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.view;\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.setup && impl.setup(sendToApp)\n\t\t\tvar view = impl.view;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.title) && (_VirtualDom_doc.title = title = doc.title);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.onUrlChange;\n\tvar onUrlRequest = impl.onUrlRequest;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tsetup: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.protocol === next.protocol\n\t\t\t\t\t\t\t&& curr.host === next.host\n\t\t\t\t\t\t\t&& curr.port_.a === next.port_.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tinit: function(flags)\n\t\t{\n\t\t\treturn A3(impl.init, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tview: impl.view,\n\t\tupdate: impl.update,\n\t\tsubscriptions: impl.subscriptions\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { hidden: 'hidden', change: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { hidden: 'mozHidden', change: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { hidden: 'msHidden', change: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }\n\t\t: { hidden: 'hidden', change: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\tscene: _Browser_getScene(),\n\t\tviewport: {\n\t\t\tx: _Browser_window.pageXOffset,\n\t\t\ty: _Browser_window.pageYOffset,\n\t\t\twidth: _Browser_doc.documentElement.clientWidth,\n\t\t\theight: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\twidth: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\theight: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\tscene: {\n\t\t\t\twidth: node.scrollWidth,\n\t\t\t\theight: node.scrollHeight\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tx: node.scrollLeft,\n\t\t\t\ty: node.scrollTop,\n\t\t\t\twidth: node.clientWidth,\n\t\t\t\theight: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\tscene: _Browser_getScene(),\n\t\t\tviewport: {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\twidth: _Browser_doc.documentElement.clientWidth,\n\t\t\t\theight: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\telement: {\n\t\t\t\tx: x + rect.left,\n\t\t\t\ty: y + rect.top,\n\t\t\t\twidth: rect.width,\n\t\t\t\theight: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\n\n\n// STRINGS\n\n\nvar _Parser_isSubString = F5(function(smallString, offset, row, col, bigString)\n{\n\tvar smallLength = smallString.length;\n\tvar isGood = offset + smallLength <= bigString.length;\n\n\tfor (var i = 0; isGood && i < smallLength; )\n\t{\n\t\tvar code = bigString.charCodeAt(offset);\n\t\tisGood =\n\t\t\tsmallString[i++] === bigString[offset++]\n\t\t\t&& (\n\t\t\t\tcode === 0x000A /* \\n */\n\t\t\t\t\t? ( row++, col=1 )\n\t\t\t\t\t: ( col++, (code & 0xF800) === 0xD800 ? smallString[i++] === bigString[offset++] : 1 )\n\t\t\t)\n\t}\n\n\treturn _Utils_Tuple3(isGood ? offset : -1, row, col);\n});\n\n\n\n// CHARS\n\n\nvar _Parser_isSubChar = F3(function(predicate, offset, string)\n{\n\treturn (\n\t\tstring.length <= offset\n\t\t\t? -1\n\t\t\t:\n\t\t(string.charCodeAt(offset) & 0xF800) === 0xD800\n\t\t\t? (predicate(_Utils_chr(string.substr(offset, 2))) ? offset + 2 : -1)\n\t\t\t:\n\t\t(predicate(_Utils_chr(string[offset]))\n\t\t\t? ((string[offset] === '\\n') ? -2 : (offset + 1))\n\t\t\t: -1\n\t\t)\n\t);\n});\n\n\nvar _Parser_isAsciiCode = F3(function(code, offset, string)\n{\n\treturn string.charCodeAt(offset) === code;\n});\n\n\n\n// NUMBERS\n\n\nvar _Parser_chompBase10 = F2(function(offset, string)\n{\n\tfor (; offset < string.length; offset++)\n\t{\n\t\tvar code = string.charCodeAt(offset);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn offset;\n\t\t}\n\t}\n\treturn offset;\n});\n\n\nvar _Parser_consumeBase = F3(function(base, offset, string)\n{\n\tfor (var total = 0; offset < string.length; offset++)\n\t{\n\t\tvar digit = string.charCodeAt(offset) - 0x30;\n\t\tif (digit < 0 || base <= digit) break;\n\t\ttotal = base * total + digit;\n\t}\n\treturn _Utils_Tuple2(offset, total);\n});\n\n\nvar _Parser_consumeBase16 = F2(function(offset, string)\n{\n\tfor (var total = 0; offset < string.length; offset++)\n\t{\n\t\tvar code = string.charCodeAt(offset);\n\t\tif (0x30 <= code && code <= 0x39)\n\t\t{\n\t\t\ttotal = 16 * total + code - 0x30;\n\t\t}\n\t\telse if (0x41 <= code && code <= 0x46)\n\t\t{\n\t\t\ttotal = 16 * total + code - 55;\n\t\t}\n\t\telse if (0x61 <= code && code <= 0x66)\n\t\t{\n\t\t\ttotal = 16 * total + code - 87;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn _Utils_Tuple2(offset, total);\n});\n\n\n\n// FIND STRING\n\n\nvar _Parser_findSubString = F5(function(smallString, offset, row, col, bigString)\n{\n\tvar newOffset = bigString.indexOf(smallString, offset);\n\tvar target = newOffset < 0 ? bigString.length : newOffset + smallString.length;\n\n\twhile (offset < target)\n\t{\n\t\tvar code = bigString.charCodeAt(offset++);\n\t\tcode === 0x000A /* \\n */\n\t\t\t? ( col=1, row++ )\n\t\t\t: ( col++, (code & 0xF800) === 0xD800 && offset++ )\n\t}\n\n\treturn _Utils_Tuple3(newOffset, row, col);\n});\n\n\n\n// DECODER\n\nvar _File_decoder = _Json_decodePrim(function(value) {\n\t// NOTE: checks if `File` exists in case this is run on node\n\treturn (typeof File !== 'undefined' && value instanceof File)\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FILE', value);\n});\n\n\n// METADATA\n\nfunction _File_name(file) { return file.name; }\nfunction _File_mime(file) { return file.type; }\nfunction _File_size(file) { return file.size; }\n\nfunction _File_lastModified(file)\n{\n\treturn $elm$time$Time$millisToPosix(file.lastModified);\n}\n\n\n// DOWNLOAD\n\nvar _File_downloadNode;\n\nfunction _File_getDownloadNode()\n{\n\treturn _File_downloadNode || (_File_downloadNode = document.createElement('a'));\n}\n\nvar _File_download = F3(function(name, mime, content)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar blob = new Blob([content], {type: mime});\n\n\t\t// for IE10+\n\t\tif (navigator.msSaveOrOpenBlob)\n\t\t{\n\t\t\tnavigator.msSaveOrOpenBlob(blob, name);\n\t\t\treturn;\n\t\t}\n\n\t\t// for HTML5\n\t\tvar node = _File_getDownloadNode();\n\t\tvar objectUrl = URL.createObjectURL(blob);\n\t\tnode.href = objectUrl;\n\t\tnode.download = name;\n\t\t_File_click(node);\n\t\tURL.revokeObjectURL(objectUrl);\n\t});\n});\n\nfunction _File_downloadUrl(href)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar node = _File_getDownloadNode();\n\t\tnode.href = href;\n\t\tnode.download = '';\n\t\tnode.origin === location.origin || (node.target = '_blank');\n\t\t_File_click(node);\n\t});\n}\n\n\n// IE COMPATIBILITY\n\nfunction _File_makeBytesSafeForInternetExplorer(bytes)\n{\n\t// only needed by IE10 and IE11 to fix https://github.com/elm/file/issues/10\n\t// all other browsers can just run `new Blob([bytes])` directly with no problem\n\t//\n\treturn new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n}\n\nfunction _File_click(node)\n{\n\t// only needed by IE10 and IE11 to fix https://github.com/elm/file/issues/11\n\t// all other browsers have MouseEvent and do not need this conditional stuff\n\t//\n\tif (typeof MouseEvent === 'function')\n\t{\n\t\tnode.dispatchEvent(new MouseEvent('click'));\n\t}\n\telse\n\t{\n\t\tvar event = document.createEvent('MouseEvents');\n\t\tevent.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\t\tdocument.body.appendChild(node);\n\t\tnode.dispatchEvent(event);\n\t\tdocument.body.removeChild(node);\n\t}\n}\n\n\n// UPLOAD\n\nvar _File_node;\n\nfunction _File_uploadOne(mimes)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_File_node = document.createElement('input');\n\t\t_File_node.type = 'file';\n\t\t_File_node.accept = A2($elm$core$String$join, ',', mimes);\n\t\t_File_node.addEventListener('change', function(event)\n\t\t{\n\t\t\tcallback(_Scheduler_succeed(event.target.files[0]));\n\t\t});\n\t\t_File_click(_File_node);\n\t});\n}\n\nfunction _File_uploadOneOrMore(mimes)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_File_node = document.createElement('input');\n\t\t_File_node.type = 'file';\n\t\t_File_node.multiple = true;\n\t\t_File_node.accept = A2($elm$core$String$join, ',', mimes);\n\t\t_File_node.addEventListener('change', function(event)\n\t\t{\n\t\t\tvar elmFiles = _List_fromArray(event.target.files);\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple2(elmFiles.a, elmFiles.b)));\n\t\t});\n\t\t_File_click(_File_node);\n\t});\n}\n\n\n// CONTENT\n\nfunction _File_toString(blob)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar reader = new FileReader();\n\t\treader.addEventListener('loadend', function() {\n\t\t\tcallback(_Scheduler_succeed(reader.result));\n\t\t});\n\t\treader.readAsText(blob);\n\t\treturn function() { reader.abort(); };\n\t});\n}\n\nfunction _File_toBytes(blob)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar reader = new FileReader();\n\t\treader.addEventListener('loadend', function() {\n\t\t\tcallback(_Scheduler_succeed(new DataView(reader.result)));\n\t\t});\n\t\treader.readAsArrayBuffer(blob);\n\t\treturn function() { reader.abort(); };\n\t});\n}\n\nfunction _File_toUrl(blob)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar reader = new FileReader();\n\t\treader.addEventListener('loadend', function() {\n\t\t\tcallback(_Scheduler_succeed(reader.result));\n\t\t});\n\t\treader.readAsDataURL(blob);\n\t\treturn function() { reader.abort(); };\n\t});\n}\n\n\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.expect.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a);\n\n\t\ttry {\n\t\t\txhr.open(request.method, request.url, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.url));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.body.a && xhr.setRequestHeader('Content-Type', request.body.a);\n\t\txhr.send(request.body.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.timeout.a || 0;\n\txhr.responseType = request.expect.d;\n\txhr.withCredentials = request.allowCookiesFromOtherDomains;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\turl: xhr.responseURL,\n\t\tstatusCode: xhr.status,\n\t\tstatusText: xhr.statusText,\n\t\theaders: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tsent: event.loaded,\n\t\t\tsize: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\treceived: event.loaded,\n\t\t\tsize: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $elm$core$Basics$EQ = {$: 'EQ'};\nvar $elm$core$Basics$GT = {$: 'GT'};\nvar $elm$core$Basics$LT = {$: 'LT'};\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === 'RBEmpty_elm_builtin') {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0.a;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (node.$ === 'SubTree') {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 'Err', a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Failure', a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Field', a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Index', a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 'Ok', a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 'OneOf', a: a};\n};\nvar $elm$core$Basics$False = {$: 'False'};\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 'Just', a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 'Nothing'};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 'Field':\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 'Nothing') {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 'Index':\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 'OneOf':\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 'Leaf', a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 'SubTree', a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.nodeListSize) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.tail),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.tail);\n\t\t} else {\n\t\t\tvar treeLen = builder.nodeListSize * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.tail) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.tail);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = {$: 'True'};\nvar $elm$core$Result$isOk = function (result) {\n\tif (result.$ === 'Ok') {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 'Normal':\n\t\t\treturn 0;\n\t\tcase 'MayStopPropagation':\n\t\t\treturn 1;\n\t\tcase 'MayPreventDefault':\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 'External', a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 'Internal', a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = function (a) {\n\treturn {$: 'NotFound', a: a};\n};\nvar $elm$url$Url$Http = {$: 'Http'};\nvar $elm$url$Url$Https = {$: 'Https'};\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 'Nothing') {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t$elm$url$Url$Http,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t$elm$url$Url$Https,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0.a;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = function (a) {\n\treturn {$: 'Perform', a: a};\n};\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0.a;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn _Utils_Tuple0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(_Utils_Tuple0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0.a;\n\t\treturn $elm$core$Task$Perform(\n\t\t\tA2($elm$core$Task$map, tagger, task));\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\t$elm$core$Task$Perform(\n\t\t\t\tA2($elm$core$Task$map, toMessage, task)));\n\t});\nvar $elm$browser$Browser$element = _Browser_element;\nvar $author$project$Decider$ErrorModel = function (a) {\n\treturn {$: 'ErrorModel', a: a};\n};\nvar $author$project$Decider$NotDownloading = {$: 'NotDownloading'};\nvar $author$project$Decider$ValidModel = function (a) {\n\treturn {$: 'ValidModel', a: a};\n};\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $author$project$Decider$Flags = F2(\n\tfunction (documents, originalMessage) {\n\t\treturn {documents: documents, originalMessage: originalMessage};\n\t});\nvar $author$project$Decider$ConversationMessage = F6(\n\tfunction (id, conversation_id, subject, body, token, created_at) {\n\t\treturn {body: body, conversation_id: conversation_id, created_at: created_at, id: id, subject: subject, token: token};\n\t});\nvar $elm$json$Json$Decode$andThen = _Json_andThen;\nvar $elm$json$Json$Decode$fail = _Json_fail;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $elm$parser$Parser$Advanced$Bad = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Bad', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$Good = F3(\n\tfunction (a, b, c) {\n\t\treturn {$: 'Good', a: a, b: b, c: c};\n\t});\nvar $elm$parser$Parser$Advanced$Parser = function (a) {\n\treturn {$: 'Parser', a: a};\n};\nvar $elm$parser$Parser$Advanced$andThen = F2(\n\tfunction (callback, _v0) {\n\t\tvar parseA = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parseA(s0);\n\t\t\t\tif (_v1.$ === 'Bad') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p1 = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\tvar _v2 = callback(a);\n\t\t\t\t\tvar parseB = _v2.a;\n\t\t\t\t\tvar _v3 = parseB(s1);\n\t\t\t\t\tif (_v3.$ === 'Bad') {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar x = _v3.b;\n\t\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar b = _v3.b;\n\t\t\t\t\t\tvar s2 = _v3.c;\n\t\t\t\t\t\treturn A3($elm$parser$Parser$Advanced$Good, p1 || p2, b, s2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$andThen = $elm$parser$Parser$Advanced$andThen;\nvar $elm$parser$Parser$ExpectingEnd = {$: 'ExpectingEnd'};\nvar $elm$parser$Parser$Advanced$AddRight = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'AddRight', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$DeadEnd = F4(\n\tfunction (row, col, problem, contextStack) {\n\t\treturn {col: col, contextStack: contextStack, problem: problem, row: row};\n\t});\nvar $elm$parser$Parser$Advanced$Empty = {$: 'Empty'};\nvar $elm$parser$Parser$Advanced$fromState = F2(\n\tfunction (s, x) {\n\t\treturn A2(\n\t\t\t$elm$parser$Parser$Advanced$AddRight,\n\t\t\t$elm$parser$Parser$Advanced$Empty,\n\t\t\tA4($elm$parser$Parser$Advanced$DeadEnd, s.row, s.col, x, s.context));\n\t});\nvar $elm$parser$Parser$Advanced$end = function (x) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn _Utils_eq(\n\t\t\t\t$elm$core$String$length(s.src),\n\t\t\t\ts.offset) ? A3($elm$parser$Parser$Advanced$Good, false, _Utils_Tuple0, s) : A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, x));\n\t\t});\n};\nvar $elm$parser$Parser$end = $elm$parser$Parser$Advanced$end($elm$parser$Parser$ExpectingEnd);\nvar $elm$parser$Parser$Advanced$isSubChar = _Parser_isSubChar;\nvar $elm$core$Basics$negate = function (n) {\n\treturn -n;\n};\nvar $elm$parser$Parser$Advanced$chompWhileHelp = F5(\n\tfunction (isGood, offset, row, col, s0) {\n\t\tchompWhileHelp:\n\t\twhile (true) {\n\t\t\tvar newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, offset, s0.src);\n\t\t\tif (_Utils_eq(newOffset, -1)) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t_Utils_cmp(s0.offset, offset) < 0,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: col, context: s0.context, indent: s0.indent, offset: offset, row: row, src: s0.src});\n\t\t\t} else {\n\t\t\t\tif (_Utils_eq(newOffset, -2)) {\n\t\t\t\t\tvar $temp$isGood = isGood,\n\t\t\t\t\t\t$temp$offset = offset + 1,\n\t\t\t\t\t\t$temp$row = row + 1,\n\t\t\t\t\t\t$temp$col = 1,\n\t\t\t\t\t\t$temp$s0 = s0;\n\t\t\t\t\tisGood = $temp$isGood;\n\t\t\t\t\toffset = $temp$offset;\n\t\t\t\t\trow = $temp$row;\n\t\t\t\t\tcol = $temp$col;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue chompWhileHelp;\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$isGood = isGood,\n\t\t\t\t\t\t$temp$offset = newOffset,\n\t\t\t\t\t\t$temp$row = row,\n\t\t\t\t\t\t$temp$col = col + 1,\n\t\t\t\t\t\t$temp$s0 = s0;\n\t\t\t\t\tisGood = $temp$isGood;\n\t\t\t\t\toffset = $temp$offset;\n\t\t\t\t\trow = $temp$row;\n\t\t\t\t\tcol = $temp$col;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue chompWhileHelp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$chompWhile = function (isGood) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A5($elm$parser$Parser$Advanced$chompWhileHelp, isGood, s.offset, s.row, s.col, s);\n\t\t});\n};\nvar $elm$parser$Parser$chompWhile = $elm$parser$Parser$Advanced$chompWhile;\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $elm$parser$Parser$Advanced$mapChompedString = F2(\n\tfunction (func, _v0) {\n\t\tvar parse = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Bad') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\tfunc,\n\t\t\t\t\t\t\tA3($elm$core$String$slice, s0.offset, s1.offset, s0.src),\n\t\t\t\t\t\t\ta),\n\t\t\t\t\t\ts1);\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$getChompedString = function (parser) {\n\treturn A2($elm$parser$Parser$Advanced$mapChompedString, $elm$core$Basics$always, parser);\n};\nvar $elm$parser$Parser$getChompedString = $elm$parser$Parser$Advanced$getChompedString;\nvar $elm$parser$Parser$Problem = function (a) {\n\treturn {$: 'Problem', a: a};\n};\nvar $elm$parser$Parser$Advanced$problem = function (x) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, x));\n\t\t});\n};\nvar $elm$parser$Parser$problem = function (msg) {\n\treturn $elm$parser$Parser$Advanced$problem(\n\t\t$elm$parser$Parser$Problem(msg));\n};\nvar $elm$core$Basics$round = _Basics_round;\nvar $elm$parser$Parser$Advanced$succeed = function (a) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A3($elm$parser$Parser$Advanced$Good, false, a, s);\n\t\t});\n};\nvar $elm$parser$Parser$succeed = $elm$parser$Parser$Advanced$succeed;\nvar $elm$core$String$toFloat = _String_toFloat;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$fractionsOfASecondInMs = A2(\n\t$elm$parser$Parser$andThen,\n\tfunction (str) {\n\t\tif ($elm$core$String$length(str) <= 9) {\n\t\t\tvar _v0 = $elm$core$String$toFloat('0.' + str);\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar floatVal = _v0.a;\n\t\t\t\treturn $elm$parser$Parser$succeed(\n\t\t\t\t\t$elm$core$Basics$round(floatVal * 1000));\n\t\t\t} else {\n\t\t\t\treturn $elm$parser$Parser$problem('Invalid float: \\\"' + (str + '\\\"'));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$parser$Parser$problem(\n\t\t\t\t'Expected at most 9 digits, but got ' + $elm$core$String$fromInt(\n\t\t\t\t\t$elm$core$String$length(str)));\n\t\t}\n\t},\n\t$elm$parser$Parser$getChompedString(\n\t\t$elm$parser$Parser$chompWhile($elm$core$Char$isDigit)));\nvar $elm$time$Time$Posix = function (a) {\n\treturn {$: 'Posix', a: a};\n};\nvar $elm$time$Time$millisToPosix = $elm$time$Time$Posix;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts = F6(\n\tfunction (monthYearDayMs, hour, minute, second, ms, utcOffsetMinutes) {\n\t\treturn $elm$time$Time$millisToPosix((((monthYearDayMs + (((hour * 60) * 60) * 1000)) + (((minute - utcOffsetMinutes) * 60) * 1000)) + (second * 1000)) + ms);\n\t});\nvar $elm$parser$Parser$Advanced$map2 = F3(\n\tfunction (func, _v0, _v1) {\n\t\tvar parseA = _v0.a;\n\t\tvar parseB = _v1.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v2 = parseA(s0);\n\t\t\t\tif (_v2.$ === 'Bad') {\n\t\t\t\t\tvar p = _v2.a;\n\t\t\t\t\tvar x = _v2.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p1 = _v2.a;\n\t\t\t\t\tvar a = _v2.b;\n\t\t\t\t\tvar s1 = _v2.c;\n\t\t\t\t\tvar _v3 = parseB(s1);\n\t\t\t\t\tif (_v3.$ === 'Bad') {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar x = _v3.b;\n\t\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar b = _v3.b;\n\t\t\t\t\t\tvar s2 = _v3.c;\n\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\t\tp1 || p2,\n\t\t\t\t\t\t\tA2(func, a, b),\n\t\t\t\t\t\t\ts2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$ignorer = F2(\n\tfunction (keepParser, ignoreParser) {\n\t\treturn A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$always, keepParser, ignoreParser);\n\t});\nvar $elm$parser$Parser$ignorer = $elm$parser$Parser$Advanced$ignorer;\nvar $elm$parser$Parser$Advanced$keeper = F2(\n\tfunction (parseFunc, parseArg) {\n\t\treturn A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$apL, parseFunc, parseArg);\n\t});\nvar $elm$parser$Parser$keeper = $elm$parser$Parser$Advanced$keeper;\nvar $elm$parser$Parser$Advanced$Append = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Append', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$oneOfHelp = F3(\n\tfunction (s0, bag, parsers) {\n\t\toneOfHelp:\n\t\twhile (true) {\n\t\t\tif (!parsers.b) {\n\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, false, bag);\n\t\t\t} else {\n\t\t\t\tvar parse = parsers.a.a;\n\t\t\t\tvar remainingParsers = parsers.b;\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\t\tvar step = _v1;\n\t\t\t\t\treturn step;\n\t\t\t\t} else {\n\t\t\t\t\tvar step = _v1;\n\t\t\t\t\tvar p = step.a;\n\t\t\t\t\tvar x = step.b;\n\t\t\t\t\tif (p) {\n\t\t\t\t\t\treturn step;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar $temp$s0 = s0,\n\t\t\t\t\t\t\t$temp$bag = A2($elm$parser$Parser$Advanced$Append, bag, x),\n\t\t\t\t\t\t\t$temp$parsers = remainingParsers;\n\t\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\t\tparsers = $temp$parsers;\n\t\t\t\t\t\tcontinue oneOfHelp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$oneOf = function (parsers) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A3($elm$parser$Parser$Advanced$oneOfHelp, s, $elm$parser$Parser$Advanced$Empty, parsers);\n\t\t});\n};\nvar $elm$parser$Parser$oneOf = $elm$parser$Parser$Advanced$oneOf;\nvar $elm$parser$Parser$Done = function (a) {\n\treturn {$: 'Done', a: a};\n};\nvar $elm$parser$Parser$Loop = function (a) {\n\treturn {$: 'Loop', a: a};\n};\nvar $elm$core$String$append = _String_append;\nvar $elm$parser$Parser$UnexpectedChar = {$: 'UnexpectedChar'};\nvar $elm$parser$Parser$Advanced$chompIf = F2(\n\tfunction (isGood, expecting) {\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s) {\n\t\t\t\tvar newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, s.offset, s.src);\n\t\t\t\treturn _Utils_eq(newOffset, -1) ? A2(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\t\tfalse,\n\t\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, expecting)) : (_Utils_eq(newOffset, -2) ? A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\ttrue,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: 1, context: s.context, indent: s.indent, offset: s.offset + 1, row: s.row + 1, src: s.src}) : A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\ttrue,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: s.col + 1, context: s.context, indent: s.indent, offset: newOffset, row: s.row, src: s.src}));\n\t\t\t});\n\t});\nvar $elm$parser$Parser$chompIf = function (isGood) {\n\treturn A2($elm$parser$Parser$Advanced$chompIf, isGood, $elm$parser$Parser$UnexpectedChar);\n};\nvar $elm$parser$Parser$Advanced$loopHelp = F4(\n\tfunction (p, state, callback, s0) {\n\t\tloopHelp:\n\t\twhile (true) {\n\t\t\tvar _v0 = callback(state);\n\t\t\tvar parse = _v0.a;\n\t\t\tvar _v1 = parse(s0);\n\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\tvar p1 = _v1.a;\n\t\t\t\tvar step = _v1.b;\n\t\t\t\tvar s1 = _v1.c;\n\t\t\t\tif (step.$ === 'Loop') {\n\t\t\t\t\tvar newState = step.a;\n\t\t\t\t\tvar $temp$p = p || p1,\n\t\t\t\t\t\t$temp$state = newState,\n\t\t\t\t\t\t$temp$callback = callback,\n\t\t\t\t\t\t$temp$s0 = s1;\n\t\t\t\t\tp = $temp$p;\n\t\t\t\t\tstate = $temp$state;\n\t\t\t\t\tcallback = $temp$callback;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue loopHelp;\n\t\t\t\t} else {\n\t\t\t\t\tvar result = step.a;\n\t\t\t\t\treturn A3($elm$parser$Parser$Advanced$Good, p || p1, result, s1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar p1 = _v1.a;\n\t\t\t\tvar x = _v1.b;\n\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p || p1, x);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$loop = F2(\n\tfunction (state, callback) {\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s) {\n\t\t\t\treturn A4($elm$parser$Parser$Advanced$loopHelp, false, state, callback, s);\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$map = F2(\n\tfunction (func, _v0) {\n\t\tvar parse = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tfunc(a),\n\t\t\t\t\t\ts1);\n\t\t\t\t} else {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$map = $elm$parser$Parser$Advanced$map;\nvar $elm$parser$Parser$Advanced$Done = function (a) {\n\treturn {$: 'Done', a: a};\n};\nvar $elm$parser$Parser$Advanced$Loop = function (a) {\n\treturn {$: 'Loop', a: a};\n};\nvar $elm$parser$Parser$toAdvancedStep = function (step) {\n\tif (step.$ === 'Loop') {\n\t\tvar s = step.a;\n\t\treturn $elm$parser$Parser$Advanced$Loop(s);\n\t} else {\n\t\tvar a = step.a;\n\t\treturn $elm$parser$Parser$Advanced$Done(a);\n\t}\n};\nvar $elm$parser$Parser$loop = F2(\n\tfunction (state, callback) {\n\t\treturn A2(\n\t\t\t$elm$parser$Parser$Advanced$loop,\n\t\t\tstate,\n\t\t\tfunction (s) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t$elm$parser$Parser$toAdvancedStep,\n\t\t\t\t\tcallback(s));\n\t\t\t});\n\t});\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt = function (quantity) {\n\tvar helper = function (str) {\n\t\tif (_Utils_eq(\n\t\t\t$elm$core$String$length(str),\n\t\t\tquantity)) {\n\t\t\tvar _v0 = $elm$core$String$toInt(str);\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar intVal = _v0.a;\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t$elm$parser$Parser$Done,\n\t\t\t\t\t$elm$parser$Parser$succeed(intVal));\n\t\t\t} else {\n\t\t\t\treturn $elm$parser$Parser$problem('Invalid integer: \\\"' + (str + '\\\"'));\n\t\t\t}\n\t\t} else {\n\t\t\treturn A2(\n\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\tfunction (nextChar) {\n\t\t\t\t\treturn $elm$parser$Parser$Loop(\n\t\t\t\t\t\tA2($elm$core$String$append, str, nextChar));\n\t\t\t\t},\n\t\t\t\t$elm$parser$Parser$getChompedString(\n\t\t\t\t\t$elm$parser$Parser$chompIf($elm$core$Char$isDigit)));\n\t\t}\n\t};\n\treturn A2($elm$parser$Parser$loop, '', helper);\n};\nvar $elm$parser$Parser$ExpectingSymbol = function (a) {\n\treturn {$: 'ExpectingSymbol', a: a};\n};\nvar $elm$parser$Parser$Advanced$Token = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Token', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$isSubString = _Parser_isSubString;\nvar $elm$core$Basics$not = _Basics_not;\nvar $elm$parser$Parser$Advanced$token = function (_v0) {\n\tvar str = _v0.a;\n\tvar expecting = _v0.b;\n\tvar progress = !$elm$core$String$isEmpty(str);\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\tvar _v1 = A5($elm$parser$Parser$Advanced$isSubString, str, s.offset, s.row, s.col, s.src);\n\t\t\tvar newOffset = _v1.a;\n\t\t\tvar newRow = _v1.b;\n\t\t\tvar newCol = _v1.c;\n\t\t\treturn _Utils_eq(newOffset, -1) ? A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, expecting)) : A3(\n\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\tprogress,\n\t\t\t\t_Utils_Tuple0,\n\t\t\t\t{col: newCol, context: s.context, indent: s.indent, offset: newOffset, row: newRow, src: s.src});\n\t\t});\n};\nvar $elm$parser$Parser$Advanced$symbol = $elm$parser$Parser$Advanced$token;\nvar $elm$parser$Parser$symbol = function (str) {\n\treturn $elm$parser$Parser$Advanced$symbol(\n\t\tA2(\n\t\t\t$elm$parser$Parser$Advanced$Token,\n\t\t\tstr,\n\t\t\t$elm$parser$Parser$ExpectingSymbol(str)));\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear = 1970;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay = function (day) {\n\treturn $elm$parser$Parser$problem(\n\t\t'Invalid day: ' + $elm$core$String$fromInt(day));\n};\nvar $elm$core$Basics$modBy = _Basics_modBy;\nvar $elm$core$Basics$neq = _Utils_notEqual;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear = function (year) {\n\treturn (!A2($elm$core$Basics$modBy, 4, year)) && ((!(!A2($elm$core$Basics$modBy, 100, year))) || (!A2($elm$core$Basics$modBy, 400, year)));\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore = function (y1) {\n\tvar y = y1 - 1;\n\treturn (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerDay = 86400000;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerYear = 31536000000;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$yearMonthDay = function (_v0) {\n\tvar year = _v0.a;\n\tvar month = _v0.b;\n\tvar dayInMonth = _v0.c;\n\tif (dayInMonth < 0) {\n\t\treturn $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth);\n\t} else {\n\t\tvar succeedWith = function (extraMs) {\n\t\t\tvar yearMs = $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerYear * (year - $rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear);\n\t\t\tvar days = ((month < 3) || (!$rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear(year))) ? (dayInMonth - 1) : dayInMonth;\n\t\t\tvar dayMs = $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerDay * (days + ($rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore(year) - $rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore($rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear)));\n\t\t\treturn $elm$parser$Parser$succeed((extraMs + yearMs) + dayMs);\n\t\t};\n\t\tswitch (month) {\n\t\t\tcase 1:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(0);\n\t\t\tcase 2:\n\t\t\t\treturn ((dayInMonth > 29) || ((dayInMonth === 29) && (!$rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear(year)))) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(2678400000);\n\t\t\tcase 3:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(5097600000);\n\t\t\tcase 4:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(7776000000);\n\t\t\tcase 5:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(10368000000);\n\t\t\tcase 6:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(13046400000);\n\t\t\tcase 7:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(15638400000);\n\t\t\tcase 8:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(18316800000);\n\t\t\tcase 9:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(20995200000);\n\t\t\tcase 10:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(23587200000);\n\t\t\tcase 11:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(26265600000);\n\t\t\tcase 12:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(28857600000);\n\t\t\tdefault:\n\t\t\t\treturn $elm$parser$Parser$problem(\n\t\t\t\t\t'Invalid month: \\\"' + ($elm$core$String$fromInt(month) + '\\\"'));\n\t\t}\n\t}\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$monthYearDayInMs = A2(\n\t$elm$parser$Parser$andThen,\n\t$rtfeldman$elm_iso8601_date_strings$Iso8601$yearMonthDay,\n\tA2(\n\t\t$elm$parser$Parser$keeper,\n\t\tA2(\n\t\t\t$elm$parser$Parser$keeper,\n\t\t\tA2(\n\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\tF3(\n\t\t\t\t\t\tfunction (year, month, day) {\n\t\t\t\t\t\t\treturn _Utils_Tuple3(year, month, day);\n\t\t\t\t\t\t})),\n\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(4)),\n\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t$elm$parser$Parser$symbol('-')),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t]))),\n\t\t$elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t$elm$parser$Parser$symbol('-')),\n\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t]))));\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$utcOffsetInMinutes = function () {\n\tvar utcOffsetMinutesFromParts = F3(\n\t\tfunction (multiplier, hours, minutes) {\n\t\t\treturn (multiplier * (hours * 60)) + minutes;\n\t\t});\n\treturn A2(\n\t\t$elm$parser$Parser$keeper,\n\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t$elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\tfunction (_v0) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\t$elm$parser$Parser$symbol('Z')),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t$elm$parser$Parser$succeed(utcOffsetMinutesFromParts),\n\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t\t\t\t\t\tfunction (_v1) {\n\t\t\t\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('+')),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t\t\t\t\t\tfunction (_v2) {\n\t\t\t\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('-'))\n\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2),\n\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(0)\n\t\t\t\t\t\t\t]))),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t$elm$parser$Parser$succeed(0),\n\t\t\t\t\t$elm$parser$Parser$end)\n\t\t\t\t])));\n}();\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$iso8601 = A2(\n\t$elm$parser$Parser$andThen,\n\tfunction (datePart) {\n\t\treturn $elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts(datePart)),\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('T')),\n\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('.')),\n\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$fractionsOfASecondInMs),\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(0)\n\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\tA2($elm$parser$Parser$ignorer, $rtfeldman$elm_iso8601_date_strings$Iso8601$utcOffsetInMinutes, $elm$parser$Parser$end)),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\t\tA6($rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts, datePart, 0, 0, 0, 0, 0)),\n\t\t\t\t\t$elm$parser$Parser$end)\n\t\t\t\t]));\n\t},\n\t$rtfeldman$elm_iso8601_date_strings$Iso8601$monthYearDayInMs);\nvar $elm$parser$Parser$DeadEnd = F3(\n\tfunction (row, col, problem) {\n\t\treturn {col: col, problem: problem, row: row};\n\t});\nvar $elm$parser$Parser$problemToDeadEnd = function (p) {\n\treturn A3($elm$parser$Parser$DeadEnd, p.row, p.col, p.problem);\n};\nvar $elm$parser$Parser$Advanced$bagToList = F2(\n\tfunction (bag, list) {\n\t\tbagToList:\n\t\twhile (true) {\n\t\t\tswitch (bag.$) {\n\t\t\t\tcase 'Empty':\n\t\t\t\t\treturn list;\n\t\t\t\tcase 'AddRight':\n\t\t\t\t\tvar bag1 = bag.a;\n\t\t\t\t\tvar x = bag.b;\n\t\t\t\t\tvar $temp$bag = bag1,\n\t\t\t\t\t\t$temp$list = A2($elm$core$List$cons, x, list);\n\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue bagToList;\n\t\t\t\tdefault:\n\t\t\t\t\tvar bag1 = bag.a;\n\t\t\t\t\tvar bag2 = bag.b;\n\t\t\t\t\tvar $temp$bag = bag1,\n\t\t\t\t\t\t$temp$list = A2($elm$parser$Parser$Advanced$bagToList, bag2, list);\n\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue bagToList;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$run = F2(\n\tfunction (_v0, src) {\n\t\tvar parse = _v0.a;\n\t\tvar _v1 = parse(\n\t\t\t{col: 1, context: _List_Nil, indent: 1, offset: 0, row: 1, src: src});\n\t\tif (_v1.$ === 'Good') {\n\t\t\tvar value = _v1.b;\n\t\t\treturn $elm$core$Result$Ok(value);\n\t\t} else {\n\t\t\tvar bag = _v1.b;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tA2($elm$parser$Parser$Advanced$bagToList, bag, _List_Nil));\n\t\t}\n\t});\nvar $elm$parser$Parser$run = F2(\n\tfunction (parser, source) {\n\t\tvar _v0 = A2($elm$parser$Parser$Advanced$run, parser, source);\n\t\tif (_v0.$ === 'Ok') {\n\t\t\tvar a = _v0.a;\n\t\t\treturn $elm$core$Result$Ok(a);\n\t\t} else {\n\t\t\tvar problems = _v0.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tA2($elm$core$List$map, $elm$parser$Parser$problemToDeadEnd, problems));\n\t\t}\n\t});\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$toTime = function (str) {\n\treturn A2($elm$parser$Parser$run, $rtfeldman$elm_iso8601_date_strings$Iso8601$iso8601, str);\n};\nvar $elm_community$json_extra$Json$Decode$Extra$datetime = A2(\n\t$elm$json$Json$Decode$andThen,\n\tfunction (dateString) {\n\t\tvar _v0 = $rtfeldman$elm_iso8601_date_strings$Iso8601$toTime(dateString);\n\t\tif (_v0.$ === 'Ok') {\n\t\t\tvar v = _v0.a;\n\t\t\treturn $elm$json$Json$Decode$succeed(v);\n\t\t} else {\n\t\t\treturn $elm$json$Json$Decode$fail('Expecting an ISO-8601 formatted date+time string');\n\t\t}\n\t},\n\t$elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$int = _Json_decodeInt;\nvar $elm$json$Json$Decode$map6 = _Json_map6;\nvar $author$project$Decider$conversationMessageDecoder = A7(\n\t$elm$json$Json$Decode$map6,\n\t$author$project$Decider$ConversationMessage,\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'conversation_id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'subject', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'created_at', $elm_community$json_extra$Json$Decode$Extra$datetime));\nvar $author$project$Decider$Document = F4(\n\tfunction (id, file_sha1, file_data, token) {\n\t\treturn {file_data: file_data, file_sha1: file_sha1, id: id, token: token};\n\t});\nvar $elm$json$Json$Decode$map4 = _Json_map4;\nvar $author$project$Decider$FileMetaData = F4(\n\tfunction (size, filename, file_sha1, mimeType) {\n\t\treturn {file_sha1: file_sha1, filename: filename, mimeType: mimeType, size: size};\n\t});\nvar $elm$json$Json$Decode$oneOf = _Json_oneOf;\nvar $author$project$Decider$metaDataDecoder = A5(\n\t$elm$json$Json$Decode$map4,\n\t$author$project$Decider$FileMetaData,\n\tA2($elm$json$Json$Decode$field, 'size', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'filename', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'sha1', $elm$json$Json$Decode$string),\n\t$elm$json$Json$Decode$oneOf(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$json$Json$Decode$field, 'type', $elm$json$Json$Decode$string),\n\t\t\t\t$elm$json$Json$Decode$succeed('NA')\n\t\t\t])));\nvar $author$project$Decider$documentDecoder = A5(\n\t$elm$json$Json$Decode$map4,\n\t$author$project$Decider$Document,\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'file_sha1', $elm$json$Json$Decode$string),\n\tA2(\n\t\t$elm$json$Json$Decode$field,\n\t\t'file_data',\n\t\tA2($elm$json$Json$Decode$field, 'metadata', $author$project$Decider$metaDataDecoder)),\n\tA2($elm$json$Json$Decode$field, 'token', $elm$json$Json$Decode$string));\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$Decider$documentsDecoder = $elm$json$Json$Decode$list($author$project$Decider$documentDecoder);\nvar $author$project$Decider$flagsDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Decider$Flags,\n\tA2($elm$json$Json$Decode$field, 'documents', $author$project$Decider$documentsDecoder),\n\tA2($elm$json$Json$Decode$field, 'message', $author$project$Decider$conversationMessageDecoder));\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $author$project$Decider$init = function (flags) {\n\tvar _v0 = A2($elm$json$Json$Decode$decodeValue, $author$project$Decider$flagsDecoder, flags);\n\tif (_v0.$ === 'Ok') {\n\t\tvar successfulFlag = _v0.a;\n\t\tvar model = $author$project$Decider$ValidModel(\n\t\t\t{checkedDocuments: successfulFlag.documents, documents: successfulFlag.documents, downloadState: $author$project$Decider$NotDownloading, droppedFiles: _List_Nil, filterFileValue: '', originalMessage: successfulFlag.originalMessage});\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t} else {\n\t\tvar error = _v0.a;\n\t\treturn _Utils_Tuple2(\n\t\t\t$author$project$Decider$ErrorModel(\n\t\t\t\t$elm$json$Json$Decode$errorToString(error)),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t}\n};\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$FileReceiverPort$fileReceiver = _Platform_incomingPort('fileReceiver', $elm$json$Json$Decode$value);\nvar $author$project$Decider$FileDropped = function (a) {\n\treturn {$: 'FileDropped', a: a};\n};\nvar $author$project$Decider$Recv = function (a) {\n\treturn {$: 'Recv', a: a};\n};\nvar $author$project$Decider$receiveFile = function (json) {\n\tvar _v0 = A2($elm$json$Json$Decode$decodeValue, $author$project$Decider$metaDataDecoder, json);\n\tif (_v0.$ === 'Ok') {\n\t\tvar fileMetaData = _v0.a;\n\t\treturn $author$project$Decider$FileDropped(fileMetaData);\n\t} else {\n\t\tvar error = _v0.a;\n\t\treturn $author$project$Decider$Recv(\n\t\t\t$elm$json$Json$Decode$errorToString(error));\n\t}\n};\nvar $author$project$Decider$subscriptions = function (_v0) {\n\treturn $author$project$FileReceiverPort$fileReceiver($author$project$Decider$receiveFile);\n};\nvar $author$project$Decider$InTheMiddleOfDownloading = {$: 'InTheMiddleOfDownloading'};\nvar $elm$core$List$any = F2(\n\tfunction (isOkay, list) {\n\t\tany:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tif (isOkay(x)) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$isOkay = isOkay,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tisOkay = $temp$isOkay;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue any;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$file$File$Download$bytes = F3(\n\tfunction (name, mime, content) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$perform,\n\t\t\t$elm$core$Basics$never,\n\t\t\tA3(\n\t\t\t\t_File_download,\n\t\t\t\tname,\n\t\t\t\tmime,\n\t\t\t\t_File_makeBytesSafeForInternetExplorer(content)));\n\t});\nvar $author$project$Decider$HandleZipDownloads = function (a) {\n\treturn {$: 'HandleZipDownloads', a: a};\n};\nvar $elm$url$Url$Builder$toQueryPair = function (_v0) {\n\tvar key = _v0.a;\n\tvar value = _v0.b;\n\treturn key + ('=' + value);\n};\nvar $elm$url$Url$Builder$toQuery = function (parameters) {\n\tif (!parameters.b) {\n\t\treturn '';\n\t} else {\n\t\treturn '?' + A2(\n\t\t\t$elm$core$String$join,\n\t\t\t'&',\n\t\t\tA2($elm$core$List$map, $elm$url$Url$Builder$toQueryPair, parameters));\n\t}\n};\nvar $elm$url$Url$Builder$absolute = F2(\n\tfunction (pathSegments, parameters) {\n\t\treturn '/' + (A2($elm$core$String$join, '/', pathSegments) + $elm$url$Url$Builder$toQuery(parameters));\n\t});\nvar $elm$json$Json$Encode$int = _Json_wrap;\nvar $elm$json$Json$Encode$object = function (pairs) {\n\treturn _Json_wrap(\n\t\tA3(\n\t\t\t$elm$core$List$foldl,\n\t\t\tF2(\n\t\t\t\tfunction (_v0, obj) {\n\t\t\t\t\tvar k = _v0.a;\n\t\t\t\t\tvar v = _v0.b;\n\t\t\t\t\treturn A3(_Json_addField, k, v, obj);\n\t\t\t\t}),\n\t\t\t_Json_emptyObject(_Utils_Tuple0),\n\t\t\tpairs));\n};\nvar $author$project$Decider$documentEncoder = function (document) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'id',\n\t\t\t\t$elm$json$Json$Encode$int(document.id))\n\t\t\t]));\n};\nvar $elm$json$Json$Encode$list = F2(\n\tfunction (func, entries) {\n\t\treturn _Json_wrap(\n\t\t\tA3(\n\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t_Json_addEntry(func),\n\t\t\t\t_Json_emptyArray(_Utils_Tuple0),\n\t\t\t\tentries));\n\t});\nvar $author$project$Decider$encodeDownloadZipFiles = function (documents) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'message',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'documents_attributes',\n\t\t\t\t\t\t\tA2($elm$json$Json$Encode$list, $author$project$Decider$documentEncoder, documents))\n\t\t\t\t\t\t])))\n\t\t\t]));\n};\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'BadStatus_', a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 'BadUrl_', a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'GoodStatus_', a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 'NetworkError_'};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 'Receiving', a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 'Sending', a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 'Timeout_'};\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (maybe.$ === 'Just') {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1.$) {\n\t\t\t\t\tcase 'LT':\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 'EQ':\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = {$: 'Black'};\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$Red = {$: 'Red'};\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1.$) {\n\t\t\t\tcase 'LT':\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 'EQ':\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {\n\t\tif ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr.$ === 'Black') {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {\n\t\tif ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr.$ === 'Black') {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {\n\t\t\t\t\tif (right.d.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\t\tif (right.d.a.$ === 'Black') {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor.$ === 'Black') {\n\t\t\tif ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === 'RBNode_elm_builtin') {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $elm$http$Http$expectBytesResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'arraybuffer',\n\t\t\t_Http_toDataView,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $elm$http$Http$BadBody = function (a) {\n\treturn {$: 'BadBody', a: a};\n};\nvar $elm$http$Http$BadStatus = function (a) {\n\treturn {$: 'BadStatus', a: a};\n};\nvar $elm$http$Http$BadUrl = function (a) {\n\treturn {$: 'BadUrl', a: a};\n};\nvar $elm$http$Http$NetworkError = {$: 'NetworkError'};\nvar $elm$http$Http$Timeout = {$: 'Timeout'};\nvar $elm$core$Result$mapError = F2(\n\tfunction (f, result) {\n\t\tif (result.$ === 'Ok') {\n\t\t\tvar v = result.a;\n\t\t\treturn $elm$core$Result$Ok(v);\n\t\t} else {\n\t\t\tvar e = result.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tf(e));\n\t\t}\n\t});\nvar $author$project$Decider$httpResponseToBytes = function (response) {\n\tswitch (response.$) {\n\t\tcase 'GoodStatus_':\n\t\t\tvar body = response.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$Result$mapError,\n\t\t\t\t$elm$http$Http$BadBody,\n\t\t\t\t$elm$core$Result$Ok(body));\n\t\tcase 'BadUrl_':\n\t\t\tvar url = response.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t$elm$http$Http$BadUrl(url));\n\t\tcase 'Timeout_':\n\t\t\treturn $elm$core$Result$Err($elm$http$Http$Timeout);\n\t\tcase 'NetworkError_':\n\t\t\treturn $elm$core$Result$Err($elm$http$Http$NetworkError);\n\t\tdefault:\n\t\t\tvar metadata = response.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t$elm$http$Http$BadStatus(metadata.statusCode));\n\t}\n};\nvar $elm$http$Http$jsonBody = function (value) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'application/json',\n\t\tA2($elm$json$Json$Encode$encode, 0, value));\n};\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 'Request', a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {reqs: reqs, subs: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (cmd.$ === 'Cancel') {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 'Nothing') {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.tracker;\n\t\t\t\t\t\t\tif (_v4.$ === 'Nothing') {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.reqs));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.subs)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 'Cancel', a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (cmd.$ === 'Cancel') {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\tallowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,\n\t\t\t\t\tbody: r.body,\n\t\t\t\t\texpect: A2(_Http_mapExpect, func, r.expect),\n\t\t\t\t\theaders: r.headers,\n\t\t\t\t\tmethod: r.method,\n\t\t\t\t\ttimeout: r.timeout,\n\t\t\t\t\ttracker: r.tracker,\n\t\t\t\t\turl: r.url\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'MySub', a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url}));\n};\nvar $elm$http$Http$post = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{body: r.body, expect: r.expect, headers: _List_Nil, method: 'POST', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});\n};\nvar $author$project$Decider$createZipfiles = F2(\n\tfunction (model, documents) {\n\t\treturn $elm$http$Http$post(\n\t\t\t{\n\t\t\t\tbody: $elm$http$Http$jsonBody(\n\t\t\t\t\t$author$project$Decider$encodeDownloadZipFiles(documents)),\n\t\t\t\texpect: A2($elm$http$Http$expectBytesResponse, $author$project$Decider$HandleZipDownloads, $author$project$Decider$httpResponseToBytes),\n\t\t\t\turl: A2(\n\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[model.originalMessage.token, 'documents']),\n\t\t\t\t\t_List_Nil)\n\t\t\t});\n\t});\nvar $elm$core$List$filter = F2(\n\tfunction (isGood, list) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, xs) {\n\t\t\t\t\treturn isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\tlist);\n\t});\nvar $elm$core$String$toUpper = _String_toUpper;\nvar $author$project$Decider$filteredFiles = F2(\n\tfunction (filterFileValue, documents) {\n\t\treturn A2(\n\t\t\t$elm$core$List$filter,\n\t\t\tfunction (d) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$String$contains,\n\t\t\t\t\t$elm$core$String$toUpper(filterFileValue),\n\t\t\t\t\t$elm$core$String$toUpper(d.file_data.filename));\n\t\t\t},\n\t\t\tdocuments);\n\t});\nvar $elm$core$List$member = F2(\n\tfunction (x, xs) {\n\t\treturn A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (a) {\n\t\t\t\treturn _Utils_eq(a, x);\n\t\t\t},\n\t\t\txs);\n\t});\nvar $author$project$Decider$update = F2(\n\tfunction (message, unionModel) {\n\t\tif (unionModel.$ === 'ValidModel') {\n\t\t\tvar model = unionModel.a;\n\t\t\tswitch (message.$) {\n\t\t\t\tcase 'Recv':\n\t\t\t\t\tvar error = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ErrorModel(error),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'FileDropped':\n\t\t\t\t\tvar fileData = message.a;\n\t\t\t\t\tvar checkedDocuments = A2(\n\t\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\treturn !_Utils_eq(d.file_sha1, fileData.file_sha1);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodel.checkedDocuments);\n\t\t\t\t\treturn A2($elm$core$List$member, fileData, model.droppedFiles) ? _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{checkedDocuments: checkedDocuments})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none) : _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcheckedDocuments: checkedDocuments,\n\t\t\t\t\t\t\t\t\tdroppedFiles: A2($elm$core$List$cons, fileData, model.droppedFiles)\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'DownloadZipFiles':\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{downloadState: $author$project$Decider$InTheMiddleOfDownloading})),\n\t\t\t\t\t\tA2($author$project$Decider$createZipfiles, model, model.checkedDocuments));\n\t\t\t\tcase 'TickDocument':\n\t\t\t\t\tvar document = message.a;\n\t\t\t\t\tvar checkedDocuments = A2(\n\t\t\t\t\t\t$elm$core$List$any,\n\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\treturn _Utils_eq(d.id, document.id);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodel.checkedDocuments) ? model.checkedDocuments : A2($elm$core$List$cons, document, model.checkedDocuments);\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{checkedDocuments: checkedDocuments})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'UntickDocument':\n\t\t\t\t\tvar document = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcheckedDocuments: A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\t\t\t\t\treturn !_Utils_eq(d.id, document.id);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tmodel.checkedDocuments)\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'HandleZipDownloads':\n\t\t\t\t\tvar result = message.a;\n\t\t\t\t\tif (result.$ === 'Err') {\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t{downloadState: $author$project$Decider$NotDownloading})),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar response = result.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t{downloadState: $author$project$Decider$NotDownloading})),\n\t\t\t\t\t\t\tA3($elm$file$File$Download$bytes, model.originalMessage.subject + '.zip', 'application/zip', response));\n\t\t\t\t\t}\n\t\t\t\tcase 'StartDownloadFilteredZipFiles':\n\t\t\t\t\tvar filteredDocuments = A2($author$project$Decider$filteredFiles, model.filterFileValue, model.documents);\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{downloadState: $author$project$Decider$InTheMiddleOfDownloading})),\n\t\t\t\t\t\tA2($author$project$Decider$createZipfiles, model, filteredDocuments));\n\t\t\t\tcase 'StartDownloadZipFiles':\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{downloadState: $author$project$Decider$InTheMiddleOfDownloading})),\n\t\t\t\t\t\tA2($author$project$Decider$createZipfiles, model, model.checkedDocuments));\n\t\t\t\tdefault:\n\t\t\t\t\tvar filterFileValue = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Decider$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{filterFileValue: filterFileValue})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t}\n\t\t} else {\n\t\t\tvar errorString = unionModel.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t$author$project$Decider$ErrorModel(errorString),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $author$project$Decider$FilterFiles = function (a) {\n\treturn {$: 'FilterFiles', a: a};\n};\nvar $author$project$Decider$StartDownloadFilteredZipFiles = {$: 'StartDownloadFilteredZipFiles'};\nvar $author$project$Decider$StartDownloadZipFiles = {$: 'StartDownloadZipFiles'};\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $elm$html$Html$button = _VirtualDom_node('button');\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$json$Json$Encode$bool = _Json_wrap;\nvar $elm$html$Html$Attributes$boolProperty = F2(\n\tfunction (key, bool) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$bool(bool));\n\t});\nvar $elm$html$Html$Attributes$disabled = $elm$html$Html$Attributes$boolProperty('disabled');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$virtual_dom$VirtualDom$attribute = F2(\n\tfunction (key, value) {\n\t\treturn A2(\n\t\t\t_VirtualDom_attribute,\n\t\t\t_VirtualDom_noOnOrFormAction(key),\n\t\t\t_VirtualDom_noJavaScriptOrHtmlUri(value));\n\t});\nvar $elm$html$Html$Attributes$attribute = $elm$virtual_dom$VirtualDom$attribute;\nvar $author$project$Decider$TickDocument = function (a) {\n\treturn {$: 'TickDocument', a: a};\n};\nvar $author$project$Decider$UntickDocument = function (a) {\n\treturn {$: 'UntickDocument', a: a};\n};\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$Attributes$checked = $elm$html$Html$Attributes$boolProperty('checked');\nvar $elm$html$Html$Attributes$download = function (fileName) {\n\treturn A2($elm$html$Html$Attributes$stringProperty, 'download', fileName);\n};\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$input = _VirtualDom_node('input');\nvar $elm$html$Html$label = _VirtualDom_node('label');\nvar $elm$virtual_dom$VirtualDom$Normal = function (a) {\n\treturn {$: 'Normal', a: a};\n};\nvar $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;\nvar $elm$html$Html$Events$on = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$Normal(decoder));\n\t});\nvar $elm$html$Html$Events$onClick = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$on,\n\t\t'click',\n\t\t$elm$json$Json$Decode$succeed(msg));\n};\nvar $elm$html$Html$span = _VirtualDom_node('span');\nvar $elm$html$Html$td = _VirtualDom_node('td');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$html$Html$tr = _VirtualDom_node('tr');\nvar $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type');\nvar $author$project$Decider$documentRow = F3(\n\tfunction (model, documents, document) {\n\t\tvar checkbox = A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (d) {\n\t\t\t\treturn _Utils_eq(d.id, document.id);\n\t\t\t},\n\t\t\tmodel.checkedDocuments) ? A2(\n\t\t\t$elm$html$Html$label,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('form-label')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('checkbox'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$checked(true),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t$author$project$Decider$UntickDocument(document))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$elm$html$Html$text('Yes')\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$label,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('form-label')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('checkbox'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$checked(false),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t$author$project$Decider$TickDocument(document))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$elm$html$Html$text('No')\n\t\t\t\t]));\n\t\tvar shouldWeDownload = A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (df) {\n\t\t\t\treturn _Utils_eq(df.file_sha1, document.file_data.file_sha1) && _Utils_eq(df.size, document.file_data.size);\n\t\t\t},\n\t\t\tmodel.droppedFiles) ? A2(\n\t\t\t$elm$html$Html$td,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tcheckbox,\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-danger d-inline ms-5 mp-5')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('(No need to download - already have this file)')\n\t\t\t\t\t\t]))\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$td,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tcheckbox,\n\t\t\t\t\t$elm$html$Html$text('')\n\t\t\t\t]));\n\t\treturn A2(\n\t\t\t$elm$html$Html$tr,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$td,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$download(document.file_data.filename),\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t'documents',\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(document.id),\n\t\t\t\t\t\t\t\t\t\t\t\t'publicly_show',\n\t\t\t\t\t\t\t\t\t\t\t\tdocument.token\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_Nil))\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$text(document.file_data.filename)\n\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t])),\n\t\t\t\t\tshouldWeDownload\n\t\t\t\t]));\n\t});\nvar $elm$html$Html$table = _VirtualDom_node('table');\nvar $elm$html$Html$tbody = _VirtualDom_node('tbody');\nvar $elm$html$Html$th = _VirtualDom_node('th');\nvar $elm$html$Html$thead = _VirtualDom_node('thead');\nvar $author$project$Decider$documentsTable = function (model) {\n\treturn A2(\n\t\t$elm$html$Html$table,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('table table-bordered table-sm')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$thead,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$tr,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('File Name')\n\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-toggle', 'tooltip'),\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-placement', 'top'),\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'title', 'Drag and drop some files from your computer to determine whether you need to download the following files.')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Download?')\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$tbody,\n\t\t\t\t_List_Nil,\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\tA2($author$project$Decider$documentRow, model, model.documents),\n\t\t\t\t\tA2($author$project$Decider$filteredFiles, model.filterFileValue, model.documents)))\n\t\t\t]));\n};\nvar $elm$html$Html$h1 = _VirtualDom_node('h1');\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$Events$alwaysStop = function (x) {\n\treturn _Utils_Tuple2(x, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {\n\treturn {$: 'MayStopPropagation', a: a};\n};\nvar $elm$html$Html$Events$stopPropagationOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayStopPropagation(decoder));\n\t});\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$html$Html$Events$targetValue = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['target', 'value']),\n\t$elm$json$Json$Decode$string);\nvar $elm$html$Html$Events$onInput = function (tagger) {\n\treturn A2(\n\t\t$elm$html$Html$Events$stopPropagationOn,\n\t\t'input',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysStop,\n\t\t\tA2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue)));\n};\nvar $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder');\nvar $elm$virtual_dom$VirtualDom$style = _VirtualDom_style;\nvar $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style;\nvar $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value');\nvar $author$project$Decider$view = function (unionModel) {\n\tif (unionModel.$ === 'ErrorModel') {\n\t\tvar message = unionModel.a;\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t} else {\n\t\tvar model = unionModel.a;\n\t\tvar filteredFileDownloadButton = ((!$elm$core$String$isEmpty(model.filterFileValue)) && (!$elm$core$List$isEmpty(\n\t\t\tA2($author$project$Decider$filteredFiles, model.filterFileValue, model.documents)))) ? A2(\n\t\t\t$elm$html$Html$button,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Events$onClick($author$project$Decider$StartDownloadFilteredZipFiles),\n\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-sm btn-outline-primary')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('Download filtered files only')\n\t\t\t\t])) : $elm$html$Html$text('');\n\t\tvar donwloadButton = function () {\n\t\t\tif (!$elm$core$String$isEmpty(model.filterFileValue)) {\n\t\t\t\treturn $elm$html$Html$text('');\n\t\t\t} else {\n\t\t\t\tvar _v1 = model.downloadState;\n\t\t\t\tif (_v1.$ === 'NotDownloading') {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick($author$project$Decider$StartDownloadZipFiles),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-sm btn-outline-primary')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('Download Checked Files (.zip)')\n\t\t\t\t\t\t\t]));\n\t\t\t\t} else {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-warning'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$disabled(true)\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('We\\'re downloading - please wait...we\\'ll be done soon!')\n\t\t\t\t\t\t\t]));\n\t\t\t\t}\n\t\t\t}\n\t\t}();\n\t\tvar appHeight = ($elm$core$List$length(model.documents) > 9) ? A2($elm$html$Html$Attributes$style, 'height', '500px') : A2($elm$html$Html$Attributes$style, 'height', '190px');\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('overflow-auto'),\n\t\t\t\t\tappHeight\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tdonwloadButton,\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Filter Files'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.filterFileValue),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onInput($author$project$Decider$FilterFiles)\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\tfilteredFileDownloadButton,\n\t\t\t\t\t$author$project$Decider$documentsTable(model)\n\t\t\t\t]));\n\t}\n};\nvar $author$project$Decider$main = $elm$browser$Browser$element(\n\t{init: $author$project$Decider$init, subscriptions: $author$project$Decider$subscriptions, update: $author$project$Decider$update, view: $author$project$Decider$view});\n_Platform_export({'Decider':{'init':$author$project$Decider$main($elm$json$Json$Decode$value)(0)}});}(this));", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \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 as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\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/** 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 objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\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 number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\n}", "(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\nconsole.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**_UNUSED/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**_UNUSED/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0_UNUSED = 0;\nvar _Utils_Tuple0 = { $: '#0' };\n\nfunction _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr_UNUSED(c) { return c; }\nfunction _Utils_chr(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil_UNUSED = { $: 0 };\nvar _List_Nil = { $: '[]' };\n\nfunction _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash_UNUSED(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.start.line === region.end.line)\n\t{\n\t\treturn 'on line ' + region.start.line;\n\t}\n\treturn 'on lines ' + region.start.line + ' through ' + region.end.line;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap(value) { return value.a; }\n\nfunction _Json_wrap_UNUSED(value) { return value; }\nfunction _Json_unwrap_UNUSED(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**_UNUSED/\n\tvar node = args['node'];\n\t//*/\n\t/**/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tmessage: func(record.message),\n\t\tstopPropagation: record.stopPropagation,\n\t\tpreventDefault: record.preventDefault\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.message;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.view;\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.setup && impl.setup(sendToApp)\n\t\t\tvar view = impl.view;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.title) && (_VirtualDom_doc.title = title = doc.title);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.onUrlChange;\n\tvar onUrlRequest = impl.onUrlRequest;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tsetup: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.protocol === next.protocol\n\t\t\t\t\t\t\t&& curr.host === next.host\n\t\t\t\t\t\t\t&& curr.port_.a === next.port_.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tinit: function(flags)\n\t\t{\n\t\t\treturn A3(impl.init, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tview: impl.view,\n\t\tupdate: impl.update,\n\t\tsubscriptions: impl.subscriptions\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { hidden: 'hidden', change: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { hidden: 'mozHidden', change: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { hidden: 'msHidden', change: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }\n\t\t: { hidden: 'hidden', change: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\tscene: _Browser_getScene(),\n\t\tviewport: {\n\t\t\tx: _Browser_window.pageXOffset,\n\t\t\ty: _Browser_window.pageYOffset,\n\t\t\twidth: _Browser_doc.documentElement.clientWidth,\n\t\t\theight: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\twidth: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\theight: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\tscene: {\n\t\t\t\twidth: node.scrollWidth,\n\t\t\t\theight: node.scrollHeight\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tx: node.scrollLeft,\n\t\t\t\ty: node.scrollTop,\n\t\t\t\twidth: node.clientWidth,\n\t\t\t\theight: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\tscene: _Browser_getScene(),\n\t\t\tviewport: {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\twidth: _Browser_doc.documentElement.clientWidth,\n\t\t\t\theight: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\telement: {\n\t\t\t\tx: x + rect.left,\n\t\t\t\ty: y + rect.top,\n\t\t\t\twidth: rect.width,\n\t\t\t\theight: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\n\n\n// STRINGS\n\n\nvar _Parser_isSubString = F5(function(smallString, offset, row, col, bigString)\n{\n\tvar smallLength = smallString.length;\n\tvar isGood = offset + smallLength <= bigString.length;\n\n\tfor (var i = 0; isGood && i < smallLength; )\n\t{\n\t\tvar code = bigString.charCodeAt(offset);\n\t\tisGood =\n\t\t\tsmallString[i++] === bigString[offset++]\n\t\t\t&& (\n\t\t\t\tcode === 0x000A /* \\n */\n\t\t\t\t\t? ( row++, col=1 )\n\t\t\t\t\t: ( col++, (code & 0xF800) === 0xD800 ? smallString[i++] === bigString[offset++] : 1 )\n\t\t\t)\n\t}\n\n\treturn _Utils_Tuple3(isGood ? offset : -1, row, col);\n});\n\n\n\n// CHARS\n\n\nvar _Parser_isSubChar = F3(function(predicate, offset, string)\n{\n\treturn (\n\t\tstring.length <= offset\n\t\t\t? -1\n\t\t\t:\n\t\t(string.charCodeAt(offset) & 0xF800) === 0xD800\n\t\t\t? (predicate(_Utils_chr(string.substr(offset, 2))) ? offset + 2 : -1)\n\t\t\t:\n\t\t(predicate(_Utils_chr(string[offset]))\n\t\t\t? ((string[offset] === '\\n') ? -2 : (offset + 1))\n\t\t\t: -1\n\t\t)\n\t);\n});\n\n\nvar _Parser_isAsciiCode = F3(function(code, offset, string)\n{\n\treturn string.charCodeAt(offset) === code;\n});\n\n\n\n// NUMBERS\n\n\nvar _Parser_chompBase10 = F2(function(offset, string)\n{\n\tfor (; offset < string.length; offset++)\n\t{\n\t\tvar code = string.charCodeAt(offset);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn offset;\n\t\t}\n\t}\n\treturn offset;\n});\n\n\nvar _Parser_consumeBase = F3(function(base, offset, string)\n{\n\tfor (var total = 0; offset < string.length; offset++)\n\t{\n\t\tvar digit = string.charCodeAt(offset) - 0x30;\n\t\tif (digit < 0 || base <= digit) break;\n\t\ttotal = base * total + digit;\n\t}\n\treturn _Utils_Tuple2(offset, total);\n});\n\n\nvar _Parser_consumeBase16 = F2(function(offset, string)\n{\n\tfor (var total = 0; offset < string.length; offset++)\n\t{\n\t\tvar code = string.charCodeAt(offset);\n\t\tif (0x30 <= code && code <= 0x39)\n\t\t{\n\t\t\ttotal = 16 * total + code - 0x30;\n\t\t}\n\t\telse if (0x41 <= code && code <= 0x46)\n\t\t{\n\t\t\ttotal = 16 * total + code - 55;\n\t\t}\n\t\telse if (0x61 <= code && code <= 0x66)\n\t\t{\n\t\t\ttotal = 16 * total + code - 87;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn _Utils_Tuple2(offset, total);\n});\n\n\n\n// FIND STRING\n\n\nvar _Parser_findSubString = F5(function(smallString, offset, row, col, bigString)\n{\n\tvar newOffset = bigString.indexOf(smallString, offset);\n\tvar target = newOffset < 0 ? bigString.length : newOffset + smallString.length;\n\n\twhile (offset < target)\n\t{\n\t\tvar code = bigString.charCodeAt(offset++);\n\t\tcode === 0x000A /* \\n */\n\t\t\t? ( col=1, row++ )\n\t\t\t: ( col++, (code & 0xF800) === 0xD800 && offset++ )\n\t}\n\n\treturn _Utils_Tuple3(newOffset, row, col);\n});\n\n\n\nfunction _Time_now(millisToPosix)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(millisToPosix(Date.now())));\n\t});\n}\n\nvar _Time_setInterval = F2(function(interval, task)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval);\n\t\treturn function() { clearInterval(id); };\n\t});\n});\n\nfunction _Time_here()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(\n\t\t\tA2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil)\n\t\t));\n\t});\n}\n\n\nfunction _Time_getZoneName()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\tvar name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tvar name = $elm$time$Time$Offset(new Date().getTimezoneOffset());\n\t\t}\n\t\tcallback(_Scheduler_succeed(name));\n\t});\n}\n\n\n\n// DECODER\n\nvar _File_decoder = _Json_decodePrim(function(value) {\n\t// NOTE: checks if `File` exists in case this is run on node\n\treturn (typeof File !== 'undefined' && value instanceof File)\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FILE', value);\n});\n\n\n// METADATA\n\nfunction _File_name(file) { return file.name; }\nfunction _File_mime(file) { return file.type; }\nfunction _File_size(file) { return file.size; }\n\nfunction _File_lastModified(file)\n{\n\treturn $elm$time$Time$millisToPosix(file.lastModified);\n}\n\n\n// DOWNLOAD\n\nvar _File_downloadNode;\n\nfunction _File_getDownloadNode()\n{\n\treturn _File_downloadNode || (_File_downloadNode = document.createElement('a'));\n}\n\nvar _File_download = F3(function(name, mime, content)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar blob = new Blob([content], {type: mime});\n\n\t\t// for IE10+\n\t\tif (navigator.msSaveOrOpenBlob)\n\t\t{\n\t\t\tnavigator.msSaveOrOpenBlob(blob, name);\n\t\t\treturn;\n\t\t}\n\n\t\t// for HTML5\n\t\tvar node = _File_getDownloadNode();\n\t\tvar objectUrl = URL.createObjectURL(blob);\n\t\tnode.href = objectUrl;\n\t\tnode.download = name;\n\t\t_File_click(node);\n\t\tURL.revokeObjectURL(objectUrl);\n\t});\n});\n\nfunction _File_downloadUrl(href)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar node = _File_getDownloadNode();\n\t\tnode.href = href;\n\t\tnode.download = '';\n\t\tnode.origin === location.origin || (node.target = '_blank');\n\t\t_File_click(node);\n\t});\n}\n\n\n// IE COMPATIBILITY\n\nfunction _File_makeBytesSafeForInternetExplorer(bytes)\n{\n\t// only needed by IE10 and IE11 to fix https://github.com/elm/file/issues/10\n\t// all other browsers can just run `new Blob([bytes])` directly with no problem\n\t//\n\treturn new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n}\n\nfunction _File_click(node)\n{\n\t// only needed by IE10 and IE11 to fix https://github.com/elm/file/issues/11\n\t// all other browsers have MouseEvent and do not need this conditional stuff\n\t//\n\tif (typeof MouseEvent === 'function')\n\t{\n\t\tnode.dispatchEvent(new MouseEvent('click'));\n\t}\n\telse\n\t{\n\t\tvar event = document.createEvent('MouseEvents');\n\t\tevent.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\t\tdocument.body.appendChild(node);\n\t\tnode.dispatchEvent(event);\n\t\tdocument.body.removeChild(node);\n\t}\n}\n\n\n// UPLOAD\n\nvar _File_node;\n\nfunction _File_uploadOne(mimes)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_File_node = document.createElement('input');\n\t\t_File_node.type = 'file';\n\t\t_File_node.accept = A2($elm$core$String$join, ',', mimes);\n\t\t_File_node.addEventListener('change', function(event)\n\t\t{\n\t\t\tcallback(_Scheduler_succeed(event.target.files[0]));\n\t\t});\n\t\t_File_click(_File_node);\n\t});\n}\n\nfunction _File_uploadOneOrMore(mimes)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_File_node = document.createElement('input');\n\t\t_File_node.type = 'file';\n\t\t_File_node.multiple = true;\n\t\t_File_node.accept = A2($elm$core$String$join, ',', mimes);\n\t\t_File_node.addEventListener('change', function(event)\n\t\t{\n\t\t\tvar elmFiles = _List_fromArray(event.target.files);\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple2(elmFiles.a, elmFiles.b)));\n\t\t});\n\t\t_File_click(_File_node);\n\t});\n}\n\n\n// CONTENT\n\nfunction _File_toString(blob)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar reader = new FileReader();\n\t\treader.addEventListener('loadend', function() {\n\t\t\tcallback(_Scheduler_succeed(reader.result));\n\t\t});\n\t\treader.readAsText(blob);\n\t\treturn function() { reader.abort(); };\n\t});\n}\n\nfunction _File_toBytes(blob)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar reader = new FileReader();\n\t\treader.addEventListener('loadend', function() {\n\t\t\tcallback(_Scheduler_succeed(new DataView(reader.result)));\n\t\t});\n\t\treader.readAsArrayBuffer(blob);\n\t\treturn function() { reader.abort(); };\n\t});\n}\n\nfunction _File_toUrl(blob)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar reader = new FileReader();\n\t\treader.addEventListener('loadend', function() {\n\t\t\tcallback(_Scheduler_succeed(reader.result));\n\t\t});\n\t\treader.readAsDataURL(blob);\n\t\treturn function() { reader.abort(); };\n\t});\n}\n\n\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.expect.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a);\n\n\t\ttry {\n\t\t\txhr.open(request.method, request.url, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.url));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.body.a && xhr.setRequestHeader('Content-Type', request.body.a);\n\t\txhr.send(request.body.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.timeout.a || 0;\n\txhr.responseType = request.expect.d;\n\txhr.withCredentials = request.allowCookiesFromOtherDomains;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\turl: xhr.responseURL,\n\t\tstatusCode: xhr.status,\n\t\tstatusText: xhr.statusText,\n\t\theaders: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tsent: event.loaded,\n\t\t\tsize: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\treceived: event.loaded,\n\t\t\tsize: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $elm$core$Basics$EQ = {$: 'EQ'};\nvar $elm$core$Basics$GT = {$: 'GT'};\nvar $elm$core$Basics$LT = {$: 'LT'};\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === 'RBEmpty_elm_builtin') {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0.a;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (node.$ === 'SubTree') {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 'Err', a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Failure', a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Field', a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Index', a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 'Ok', a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 'OneOf', a: a};\n};\nvar $elm$core$Basics$False = {$: 'False'};\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 'Just', a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 'Nothing'};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 'Field':\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 'Nothing') {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 'Index':\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 'OneOf':\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 'Leaf', a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 'SubTree', a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.nodeListSize) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.tail),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.tail);\n\t\t} else {\n\t\t\tvar treeLen = builder.nodeListSize * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.tail) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.tail);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = {$: 'True'};\nvar $elm$core$Result$isOk = function (result) {\n\tif (result.$ === 'Ok') {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 'Normal':\n\t\t\treturn 0;\n\t\tcase 'MayStopPropagation':\n\t\t\treturn 1;\n\t\tcase 'MayPreventDefault':\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 'External', a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 'Internal', a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = function (a) {\n\treturn {$: 'NotFound', a: a};\n};\nvar $elm$url$Url$Http = {$: 'Http'};\nvar $elm$url$Url$Https = {$: 'Https'};\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 'Nothing') {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t$elm$url$Url$Http,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t$elm$url$Url$Https,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0.a;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = function (a) {\n\treturn {$: 'Perform', a: a};\n};\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0.a;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn _Utils_Tuple0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(_Utils_Tuple0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0.a;\n\t\treturn $elm$core$Task$Perform(\n\t\t\tA2($elm$core$Task$map, tagger, task));\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\t$elm$core$Task$Perform(\n\t\t\t\tA2($elm$core$Task$map, toMessage, task)));\n\t});\nvar $elm$browser$Browser$element = _Browser_element;\nvar $author$project$Main$ErrorModel = function (a) {\n\treturn {$: 'ErrorModel', a: a};\n};\nvar $author$project$Main$NotDownloading = {$: 'NotDownloading'};\nvar $author$project$Main$ValidModel = function (a) {\n\treturn {$: 'ValidModel', a: a};\n};\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $author$project$Main$Flags = F4(\n\tfunction (documents, user, project_id, originalMessage) {\n\t\treturn {documents: documents, originalMessage: originalMessage, project_id: project_id, user: user};\n\t});\nvar $author$project$Main$ConversationMessage = F6(\n\tfunction (id, conversation_id, subject, body, token, created_at) {\n\t\treturn {body: body, conversation_id: conversation_id, created_at: created_at, id: id, subject: subject, token: token};\n\t});\nvar $elm$json$Json$Decode$andThen = _Json_andThen;\nvar $elm$json$Json$Decode$fail = _Json_fail;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $elm$parser$Parser$Advanced$Bad = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Bad', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$Good = F3(\n\tfunction (a, b, c) {\n\t\treturn {$: 'Good', a: a, b: b, c: c};\n\t});\nvar $elm$parser$Parser$Advanced$Parser = function (a) {\n\treturn {$: 'Parser', a: a};\n};\nvar $elm$parser$Parser$Advanced$andThen = F2(\n\tfunction (callback, _v0) {\n\t\tvar parseA = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parseA(s0);\n\t\t\t\tif (_v1.$ === 'Bad') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p1 = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\tvar _v2 = callback(a);\n\t\t\t\t\tvar parseB = _v2.a;\n\t\t\t\t\tvar _v3 = parseB(s1);\n\t\t\t\t\tif (_v3.$ === 'Bad') {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar x = _v3.b;\n\t\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar b = _v3.b;\n\t\t\t\t\t\tvar s2 = _v3.c;\n\t\t\t\t\t\treturn A3($elm$parser$Parser$Advanced$Good, p1 || p2, b, s2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$andThen = $elm$parser$Parser$Advanced$andThen;\nvar $elm$parser$Parser$ExpectingEnd = {$: 'ExpectingEnd'};\nvar $elm$parser$Parser$Advanced$AddRight = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'AddRight', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$DeadEnd = F4(\n\tfunction (row, col, problem, contextStack) {\n\t\treturn {col: col, contextStack: contextStack, problem: problem, row: row};\n\t});\nvar $elm$parser$Parser$Advanced$Empty = {$: 'Empty'};\nvar $elm$parser$Parser$Advanced$fromState = F2(\n\tfunction (s, x) {\n\t\treturn A2(\n\t\t\t$elm$parser$Parser$Advanced$AddRight,\n\t\t\t$elm$parser$Parser$Advanced$Empty,\n\t\t\tA4($elm$parser$Parser$Advanced$DeadEnd, s.row, s.col, x, s.context));\n\t});\nvar $elm$parser$Parser$Advanced$end = function (x) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn _Utils_eq(\n\t\t\t\t$elm$core$String$length(s.src),\n\t\t\t\ts.offset) ? A3($elm$parser$Parser$Advanced$Good, false, _Utils_Tuple0, s) : A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, x));\n\t\t});\n};\nvar $elm$parser$Parser$end = $elm$parser$Parser$Advanced$end($elm$parser$Parser$ExpectingEnd);\nvar $elm$parser$Parser$Advanced$isSubChar = _Parser_isSubChar;\nvar $elm$core$Basics$negate = function (n) {\n\treturn -n;\n};\nvar $elm$parser$Parser$Advanced$chompWhileHelp = F5(\n\tfunction (isGood, offset, row, col, s0) {\n\t\tchompWhileHelp:\n\t\twhile (true) {\n\t\t\tvar newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, offset, s0.src);\n\t\t\tif (_Utils_eq(newOffset, -1)) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t_Utils_cmp(s0.offset, offset) < 0,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: col, context: s0.context, indent: s0.indent, offset: offset, row: row, src: s0.src});\n\t\t\t} else {\n\t\t\t\tif (_Utils_eq(newOffset, -2)) {\n\t\t\t\t\tvar $temp$isGood = isGood,\n\t\t\t\t\t\t$temp$offset = offset + 1,\n\t\t\t\t\t\t$temp$row = row + 1,\n\t\t\t\t\t\t$temp$col = 1,\n\t\t\t\t\t\t$temp$s0 = s0;\n\t\t\t\t\tisGood = $temp$isGood;\n\t\t\t\t\toffset = $temp$offset;\n\t\t\t\t\trow = $temp$row;\n\t\t\t\t\tcol = $temp$col;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue chompWhileHelp;\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$isGood = isGood,\n\t\t\t\t\t\t$temp$offset = newOffset,\n\t\t\t\t\t\t$temp$row = row,\n\t\t\t\t\t\t$temp$col = col + 1,\n\t\t\t\t\t\t$temp$s0 = s0;\n\t\t\t\t\tisGood = $temp$isGood;\n\t\t\t\t\toffset = $temp$offset;\n\t\t\t\t\trow = $temp$row;\n\t\t\t\t\tcol = $temp$col;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue chompWhileHelp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$chompWhile = function (isGood) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A5($elm$parser$Parser$Advanced$chompWhileHelp, isGood, s.offset, s.row, s.col, s);\n\t\t});\n};\nvar $elm$parser$Parser$chompWhile = $elm$parser$Parser$Advanced$chompWhile;\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $elm$parser$Parser$Advanced$mapChompedString = F2(\n\tfunction (func, _v0) {\n\t\tvar parse = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Bad') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\tfunc,\n\t\t\t\t\t\t\tA3($elm$core$String$slice, s0.offset, s1.offset, s0.src),\n\t\t\t\t\t\t\ta),\n\t\t\t\t\t\ts1);\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$getChompedString = function (parser) {\n\treturn A2($elm$parser$Parser$Advanced$mapChompedString, $elm$core$Basics$always, parser);\n};\nvar $elm$parser$Parser$getChompedString = $elm$parser$Parser$Advanced$getChompedString;\nvar $elm$parser$Parser$Problem = function (a) {\n\treturn {$: 'Problem', a: a};\n};\nvar $elm$parser$Parser$Advanced$problem = function (x) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, x));\n\t\t});\n};\nvar $elm$parser$Parser$problem = function (msg) {\n\treturn $elm$parser$Parser$Advanced$problem(\n\t\t$elm$parser$Parser$Problem(msg));\n};\nvar $elm$core$Basics$round = _Basics_round;\nvar $elm$parser$Parser$Advanced$succeed = function (a) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A3($elm$parser$Parser$Advanced$Good, false, a, s);\n\t\t});\n};\nvar $elm$parser$Parser$succeed = $elm$parser$Parser$Advanced$succeed;\nvar $elm$core$String$toFloat = _String_toFloat;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$fractionsOfASecondInMs = A2(\n\t$elm$parser$Parser$andThen,\n\tfunction (str) {\n\t\tif ($elm$core$String$length(str) <= 9) {\n\t\t\tvar _v0 = $elm$core$String$toFloat('0.' + str);\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar floatVal = _v0.a;\n\t\t\t\treturn $elm$parser$Parser$succeed(\n\t\t\t\t\t$elm$core$Basics$round(floatVal * 1000));\n\t\t\t} else {\n\t\t\t\treturn $elm$parser$Parser$problem('Invalid float: \\\"' + (str + '\\\"'));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$parser$Parser$problem(\n\t\t\t\t'Expected at most 9 digits, but got ' + $elm$core$String$fromInt(\n\t\t\t\t\t$elm$core$String$length(str)));\n\t\t}\n\t},\n\t$elm$parser$Parser$getChompedString(\n\t\t$elm$parser$Parser$chompWhile($elm$core$Char$isDigit)));\nvar $elm$time$Time$Posix = function (a) {\n\treturn {$: 'Posix', a: a};\n};\nvar $elm$time$Time$millisToPosix = $elm$time$Time$Posix;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts = F6(\n\tfunction (monthYearDayMs, hour, minute, second, ms, utcOffsetMinutes) {\n\t\treturn $elm$time$Time$millisToPosix((((monthYearDayMs + (((hour * 60) * 60) * 1000)) + (((minute - utcOffsetMinutes) * 60) * 1000)) + (second * 1000)) + ms);\n\t});\nvar $elm$parser$Parser$Advanced$map2 = F3(\n\tfunction (func, _v0, _v1) {\n\t\tvar parseA = _v0.a;\n\t\tvar parseB = _v1.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v2 = parseA(s0);\n\t\t\t\tif (_v2.$ === 'Bad') {\n\t\t\t\t\tvar p = _v2.a;\n\t\t\t\t\tvar x = _v2.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p1 = _v2.a;\n\t\t\t\t\tvar a = _v2.b;\n\t\t\t\t\tvar s1 = _v2.c;\n\t\t\t\t\tvar _v3 = parseB(s1);\n\t\t\t\t\tif (_v3.$ === 'Bad') {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar x = _v3.b;\n\t\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar b = _v3.b;\n\t\t\t\t\t\tvar s2 = _v3.c;\n\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\t\tp1 || p2,\n\t\t\t\t\t\t\tA2(func, a, b),\n\t\t\t\t\t\t\ts2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$ignorer = F2(\n\tfunction (keepParser, ignoreParser) {\n\t\treturn A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$always, keepParser, ignoreParser);\n\t});\nvar $elm$parser$Parser$ignorer = $elm$parser$Parser$Advanced$ignorer;\nvar $elm$parser$Parser$Advanced$keeper = F2(\n\tfunction (parseFunc, parseArg) {\n\t\treturn A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$apL, parseFunc, parseArg);\n\t});\nvar $elm$parser$Parser$keeper = $elm$parser$Parser$Advanced$keeper;\nvar $elm$parser$Parser$Advanced$Append = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Append', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$oneOfHelp = F3(\n\tfunction (s0, bag, parsers) {\n\t\toneOfHelp:\n\t\twhile (true) {\n\t\t\tif (!parsers.b) {\n\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, false, bag);\n\t\t\t} else {\n\t\t\t\tvar parse = parsers.a.a;\n\t\t\t\tvar remainingParsers = parsers.b;\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\t\tvar step = _v1;\n\t\t\t\t\treturn step;\n\t\t\t\t} else {\n\t\t\t\t\tvar step = _v1;\n\t\t\t\t\tvar p = step.a;\n\t\t\t\t\tvar x = step.b;\n\t\t\t\t\tif (p) {\n\t\t\t\t\t\treturn step;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar $temp$s0 = s0,\n\t\t\t\t\t\t\t$temp$bag = A2($elm$parser$Parser$Advanced$Append, bag, x),\n\t\t\t\t\t\t\t$temp$parsers = remainingParsers;\n\t\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\t\tparsers = $temp$parsers;\n\t\t\t\t\t\tcontinue oneOfHelp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$oneOf = function (parsers) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A3($elm$parser$Parser$Advanced$oneOfHelp, s, $elm$parser$Parser$Advanced$Empty, parsers);\n\t\t});\n};\nvar $elm$parser$Parser$oneOf = $elm$parser$Parser$Advanced$oneOf;\nvar $elm$parser$Parser$Done = function (a) {\n\treturn {$: 'Done', a: a};\n};\nvar $elm$parser$Parser$Loop = function (a) {\n\treturn {$: 'Loop', a: a};\n};\nvar $elm$core$String$append = _String_append;\nvar $elm$parser$Parser$UnexpectedChar = {$: 'UnexpectedChar'};\nvar $elm$parser$Parser$Advanced$chompIf = F2(\n\tfunction (isGood, expecting) {\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s) {\n\t\t\t\tvar newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, s.offset, s.src);\n\t\t\t\treturn _Utils_eq(newOffset, -1) ? A2(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\t\tfalse,\n\t\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, expecting)) : (_Utils_eq(newOffset, -2) ? A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\ttrue,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: 1, context: s.context, indent: s.indent, offset: s.offset + 1, row: s.row + 1, src: s.src}) : A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\ttrue,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: s.col + 1, context: s.context, indent: s.indent, offset: newOffset, row: s.row, src: s.src}));\n\t\t\t});\n\t});\nvar $elm$parser$Parser$chompIf = function (isGood) {\n\treturn A2($elm$parser$Parser$Advanced$chompIf, isGood, $elm$parser$Parser$UnexpectedChar);\n};\nvar $elm$parser$Parser$Advanced$loopHelp = F4(\n\tfunction (p, state, callback, s0) {\n\t\tloopHelp:\n\t\twhile (true) {\n\t\t\tvar _v0 = callback(state);\n\t\t\tvar parse = _v0.a;\n\t\t\tvar _v1 = parse(s0);\n\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\tvar p1 = _v1.a;\n\t\t\t\tvar step = _v1.b;\n\t\t\t\tvar s1 = _v1.c;\n\t\t\t\tif (step.$ === 'Loop') {\n\t\t\t\t\tvar newState = step.a;\n\t\t\t\t\tvar $temp$p = p || p1,\n\t\t\t\t\t\t$temp$state = newState,\n\t\t\t\t\t\t$temp$callback = callback,\n\t\t\t\t\t\t$temp$s0 = s1;\n\t\t\t\t\tp = $temp$p;\n\t\t\t\t\tstate = $temp$state;\n\t\t\t\t\tcallback = $temp$callback;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue loopHelp;\n\t\t\t\t} else {\n\t\t\t\t\tvar result = step.a;\n\t\t\t\t\treturn A3($elm$parser$Parser$Advanced$Good, p || p1, result, s1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar p1 = _v1.a;\n\t\t\t\tvar x = _v1.b;\n\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p || p1, x);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$loop = F2(\n\tfunction (state, callback) {\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s) {\n\t\t\t\treturn A4($elm$parser$Parser$Advanced$loopHelp, false, state, callback, s);\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$map = F2(\n\tfunction (func, _v0) {\n\t\tvar parse = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tfunc(a),\n\t\t\t\t\t\ts1);\n\t\t\t\t} else {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$map = $elm$parser$Parser$Advanced$map;\nvar $elm$parser$Parser$Advanced$Done = function (a) {\n\treturn {$: 'Done', a: a};\n};\nvar $elm$parser$Parser$Advanced$Loop = function (a) {\n\treturn {$: 'Loop', a: a};\n};\nvar $elm$parser$Parser$toAdvancedStep = function (step) {\n\tif (step.$ === 'Loop') {\n\t\tvar s = step.a;\n\t\treturn $elm$parser$Parser$Advanced$Loop(s);\n\t} else {\n\t\tvar a = step.a;\n\t\treturn $elm$parser$Parser$Advanced$Done(a);\n\t}\n};\nvar $elm$parser$Parser$loop = F2(\n\tfunction (state, callback) {\n\t\treturn A2(\n\t\t\t$elm$parser$Parser$Advanced$loop,\n\t\t\tstate,\n\t\t\tfunction (s) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t$elm$parser$Parser$toAdvancedStep,\n\t\t\t\t\tcallback(s));\n\t\t\t});\n\t});\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt = function (quantity) {\n\tvar helper = function (str) {\n\t\tif (_Utils_eq(\n\t\t\t$elm$core$String$length(str),\n\t\t\tquantity)) {\n\t\t\tvar _v0 = $elm$core$String$toInt(str);\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar intVal = _v0.a;\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t$elm$parser$Parser$Done,\n\t\t\t\t\t$elm$parser$Parser$succeed(intVal));\n\t\t\t} else {\n\t\t\t\treturn $elm$parser$Parser$problem('Invalid integer: \\\"' + (str + '\\\"'));\n\t\t\t}\n\t\t} else {\n\t\t\treturn A2(\n\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\tfunction (nextChar) {\n\t\t\t\t\treturn $elm$parser$Parser$Loop(\n\t\t\t\t\t\tA2($elm$core$String$append, str, nextChar));\n\t\t\t\t},\n\t\t\t\t$elm$parser$Parser$getChompedString(\n\t\t\t\t\t$elm$parser$Parser$chompIf($elm$core$Char$isDigit)));\n\t\t}\n\t};\n\treturn A2($elm$parser$Parser$loop, '', helper);\n};\nvar $elm$parser$Parser$ExpectingSymbol = function (a) {\n\treturn {$: 'ExpectingSymbol', a: a};\n};\nvar $elm$parser$Parser$Advanced$Token = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Token', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$isSubString = _Parser_isSubString;\nvar $elm$core$Basics$not = _Basics_not;\nvar $elm$parser$Parser$Advanced$token = function (_v0) {\n\tvar str = _v0.a;\n\tvar expecting = _v0.b;\n\tvar progress = !$elm$core$String$isEmpty(str);\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\tvar _v1 = A5($elm$parser$Parser$Advanced$isSubString, str, s.offset, s.row, s.col, s.src);\n\t\t\tvar newOffset = _v1.a;\n\t\t\tvar newRow = _v1.b;\n\t\t\tvar newCol = _v1.c;\n\t\t\treturn _Utils_eq(newOffset, -1) ? A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, expecting)) : A3(\n\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\tprogress,\n\t\t\t\t_Utils_Tuple0,\n\t\t\t\t{col: newCol, context: s.context, indent: s.indent, offset: newOffset, row: newRow, src: s.src});\n\t\t});\n};\nvar $elm$parser$Parser$Advanced$symbol = $elm$parser$Parser$Advanced$token;\nvar $elm$parser$Parser$symbol = function (str) {\n\treturn $elm$parser$Parser$Advanced$symbol(\n\t\tA2(\n\t\t\t$elm$parser$Parser$Advanced$Token,\n\t\t\tstr,\n\t\t\t$elm$parser$Parser$ExpectingSymbol(str)));\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear = 1970;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay = function (day) {\n\treturn $elm$parser$Parser$problem(\n\t\t'Invalid day: ' + $elm$core$String$fromInt(day));\n};\nvar $elm$core$Basics$modBy = _Basics_modBy;\nvar $elm$core$Basics$neq = _Utils_notEqual;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear = function (year) {\n\treturn (!A2($elm$core$Basics$modBy, 4, year)) && ((!(!A2($elm$core$Basics$modBy, 100, year))) || (!A2($elm$core$Basics$modBy, 400, year)));\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore = function (y1) {\n\tvar y = y1 - 1;\n\treturn (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerDay = 86400000;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerYear = 31536000000;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$yearMonthDay = function (_v0) {\n\tvar year = _v0.a;\n\tvar month = _v0.b;\n\tvar dayInMonth = _v0.c;\n\tif (dayInMonth < 0) {\n\t\treturn $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth);\n\t} else {\n\t\tvar succeedWith = function (extraMs) {\n\t\t\tvar yearMs = $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerYear * (year - $rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear);\n\t\t\tvar days = ((month < 3) || (!$rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear(year))) ? (dayInMonth - 1) : dayInMonth;\n\t\t\tvar dayMs = $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerDay * (days + ($rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore(year) - $rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore($rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear)));\n\t\t\treturn $elm$parser$Parser$succeed((extraMs + yearMs) + dayMs);\n\t\t};\n\t\tswitch (month) {\n\t\t\tcase 1:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(0);\n\t\t\tcase 2:\n\t\t\t\treturn ((dayInMonth > 29) || ((dayInMonth === 29) && (!$rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear(year)))) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(2678400000);\n\t\t\tcase 3:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(5097600000);\n\t\t\tcase 4:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(7776000000);\n\t\t\tcase 5:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(10368000000);\n\t\t\tcase 6:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(13046400000);\n\t\t\tcase 7:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(15638400000);\n\t\t\tcase 8:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(18316800000);\n\t\t\tcase 9:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(20995200000);\n\t\t\tcase 10:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(23587200000);\n\t\t\tcase 11:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(26265600000);\n\t\t\tcase 12:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(28857600000);\n\t\t\tdefault:\n\t\t\t\treturn $elm$parser$Parser$problem(\n\t\t\t\t\t'Invalid month: \\\"' + ($elm$core$String$fromInt(month) + '\\\"'));\n\t\t}\n\t}\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$monthYearDayInMs = A2(\n\t$elm$parser$Parser$andThen,\n\t$rtfeldman$elm_iso8601_date_strings$Iso8601$yearMonthDay,\n\tA2(\n\t\t$elm$parser$Parser$keeper,\n\t\tA2(\n\t\t\t$elm$parser$Parser$keeper,\n\t\t\tA2(\n\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\tF3(\n\t\t\t\t\t\tfunction (year, month, day) {\n\t\t\t\t\t\t\treturn _Utils_Tuple3(year, month, day);\n\t\t\t\t\t\t})),\n\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(4)),\n\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t$elm$parser$Parser$symbol('-')),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t]))),\n\t\t$elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t$elm$parser$Parser$symbol('-')),\n\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t]))));\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$utcOffsetInMinutes = function () {\n\tvar utcOffsetMinutesFromParts = F3(\n\t\tfunction (multiplier, hours, minutes) {\n\t\t\treturn (multiplier * (hours * 60)) + minutes;\n\t\t});\n\treturn A2(\n\t\t$elm$parser$Parser$keeper,\n\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t$elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\tfunction (_v0) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\t$elm$parser$Parser$symbol('Z')),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t$elm$parser$Parser$succeed(utcOffsetMinutesFromParts),\n\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t\t\t\t\t\tfunction (_v1) {\n\t\t\t\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('+')),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t\t\t\t\t\tfunction (_v2) {\n\t\t\t\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('-'))\n\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2),\n\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(0)\n\t\t\t\t\t\t\t]))),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t$elm$parser$Parser$succeed(0),\n\t\t\t\t\t$elm$parser$Parser$end)\n\t\t\t\t])));\n}();\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$iso8601 = A2(\n\t$elm$parser$Parser$andThen,\n\tfunction (datePart) {\n\t\treturn $elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts(datePart)),\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('T')),\n\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('.')),\n\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$fractionsOfASecondInMs),\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(0)\n\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\tA2($elm$parser$Parser$ignorer, $rtfeldman$elm_iso8601_date_strings$Iso8601$utcOffsetInMinutes, $elm$parser$Parser$end)),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\t\tA6($rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts, datePart, 0, 0, 0, 0, 0)),\n\t\t\t\t\t$elm$parser$Parser$end)\n\t\t\t\t]));\n\t},\n\t$rtfeldman$elm_iso8601_date_strings$Iso8601$monthYearDayInMs);\nvar $elm$parser$Parser$DeadEnd = F3(\n\tfunction (row, col, problem) {\n\t\treturn {col: col, problem: problem, row: row};\n\t});\nvar $elm$parser$Parser$problemToDeadEnd = function (p) {\n\treturn A3($elm$parser$Parser$DeadEnd, p.row, p.col, p.problem);\n};\nvar $elm$parser$Parser$Advanced$bagToList = F2(\n\tfunction (bag, list) {\n\t\tbagToList:\n\t\twhile (true) {\n\t\t\tswitch (bag.$) {\n\t\t\t\tcase 'Empty':\n\t\t\t\t\treturn list;\n\t\t\t\tcase 'AddRight':\n\t\t\t\t\tvar bag1 = bag.a;\n\t\t\t\t\tvar x = bag.b;\n\t\t\t\t\tvar $temp$bag = bag1,\n\t\t\t\t\t\t$temp$list = A2($elm$core$List$cons, x, list);\n\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue bagToList;\n\t\t\t\tdefault:\n\t\t\t\t\tvar bag1 = bag.a;\n\t\t\t\t\tvar bag2 = bag.b;\n\t\t\t\t\tvar $temp$bag = bag1,\n\t\t\t\t\t\t$temp$list = A2($elm$parser$Parser$Advanced$bagToList, bag2, list);\n\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue bagToList;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$run = F2(\n\tfunction (_v0, src) {\n\t\tvar parse = _v0.a;\n\t\tvar _v1 = parse(\n\t\t\t{col: 1, context: _List_Nil, indent: 1, offset: 0, row: 1, src: src});\n\t\tif (_v1.$ === 'Good') {\n\t\t\tvar value = _v1.b;\n\t\t\treturn $elm$core$Result$Ok(value);\n\t\t} else {\n\t\t\tvar bag = _v1.b;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tA2($elm$parser$Parser$Advanced$bagToList, bag, _List_Nil));\n\t\t}\n\t});\nvar $elm$parser$Parser$run = F2(\n\tfunction (parser, source) {\n\t\tvar _v0 = A2($elm$parser$Parser$Advanced$run, parser, source);\n\t\tif (_v0.$ === 'Ok') {\n\t\t\tvar a = _v0.a;\n\t\t\treturn $elm$core$Result$Ok(a);\n\t\t} else {\n\t\t\tvar problems = _v0.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tA2($elm$core$List$map, $elm$parser$Parser$problemToDeadEnd, problems));\n\t\t}\n\t});\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$toTime = function (str) {\n\treturn A2($elm$parser$Parser$run, $rtfeldman$elm_iso8601_date_strings$Iso8601$iso8601, str);\n};\nvar $elm_community$json_extra$Json$Decode$Extra$datetime = A2(\n\t$elm$json$Json$Decode$andThen,\n\tfunction (dateString) {\n\t\tvar _v0 = $rtfeldman$elm_iso8601_date_strings$Iso8601$toTime(dateString);\n\t\tif (_v0.$ === 'Ok') {\n\t\t\tvar v = _v0.a;\n\t\t\treturn $elm$json$Json$Decode$succeed(v);\n\t\t} else {\n\t\t\treturn $elm$json$Json$Decode$fail('Expecting an ISO-8601 formatted date+time string');\n\t\t}\n\t},\n\t$elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$int = _Json_decodeInt;\nvar $elm$json$Json$Decode$map6 = _Json_map6;\nvar $author$project$Main$conversationMessageDecoder = A7(\n\t$elm$json$Json$Decode$map6,\n\t$author$project$Main$ConversationMessage,\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'conversation_id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'subject', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'created_at', $elm_community$json_extra$Json$Decode$Extra$datetime));\nvar $author$project$Main$Document = F4(\n\tfunction (id, file_sha1, file_data, conversationMessages) {\n\t\treturn {conversationMessages: conversationMessages, file_data: file_data, file_sha1: file_sha1, id: id};\n\t});\nvar $elm$json$Json$Decode$map4 = _Json_map4;\nvar $author$project$Main$FileMetaData = F4(\n\tfunction (size, filename, file_sha1, mimeType) {\n\t\treturn {file_sha1: file_sha1, filename: filename, mimeType: mimeType, size: size};\n\t});\nvar $elm$json$Json$Decode$oneOf = _Json_oneOf;\nvar $author$project$Main$metaDataDecoder = A5(\n\t$elm$json$Json$Decode$map4,\n\t$author$project$Main$FileMetaData,\n\tA2($elm$json$Json$Decode$field, 'size', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'filename', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'sha1', $elm$json$Json$Decode$string),\n\t$elm$json$Json$Decode$oneOf(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$json$Json$Decode$field, 'type', $elm$json$Json$Decode$string),\n\t\t\t\t$elm$json$Json$Decode$succeed('NA')\n\t\t\t])));\nvar $author$project$Main$documentDecoder = A5(\n\t$elm$json$Json$Decode$map4,\n\t$author$project$Main$Document,\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'file_sha1', $elm$json$Json$Decode$string),\n\tA2(\n\t\t$elm$json$Json$Decode$field,\n\t\t'file_data',\n\t\tA2($elm$json$Json$Decode$field, 'metadata', $author$project$Main$metaDataDecoder)),\n\t$elm$json$Json$Decode$succeed(_List_Nil));\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$Main$documentsDecoder = $elm$json$Json$Decode$list($author$project$Main$documentDecoder);\nvar $author$project$Main$User = function (id) {\n\treturn {id: id};\n};\nvar $author$project$Main$userDecoder = A2(\n\t$elm$json$Json$Decode$map,\n\t$author$project$Main$User,\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int));\nvar $author$project$Main$flagsDecoder = A5(\n\t$elm$json$Json$Decode$map4,\n\t$author$project$Main$Flags,\n\tA2($elm$json$Json$Decode$field, 'documents', $author$project$Main$documentsDecoder),\n\tA2($elm$json$Json$Decode$field, 'user', $author$project$Main$userDecoder),\n\tA2($elm$json$Json$Decode$field, 'project_id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'message', $author$project$Main$conversationMessageDecoder));\nvar $author$project$Main$SetTime = function (a) {\n\treturn {$: 'SetTime', a: a};\n};\nvar $elm$time$Time$Name = function (a) {\n\treturn {$: 'Name', a: a};\n};\nvar $elm$time$Time$Offset = function (a) {\n\treturn {$: 'Offset', a: a};\n};\nvar $elm$time$Time$Zone = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Zone', a: a, b: b};\n\t});\nvar $elm$time$Time$customZone = $elm$time$Time$Zone;\nvar $elm$time$Time$now = _Time_now($elm$time$Time$millisToPosix);\nvar $author$project$Main$getCurrentTime = A2($elm$core$Task$perform, $author$project$Main$SetTime, $elm$time$Time$now);\nvar $author$project$Main$FetchDocument = function (a) {\n\treturn {$: 'FetchDocument', a: a};\n};\nvar $elm$core$Process$sleep = _Process_sleep;\nvar $author$project$Main$getRelatedMessagesTask = F2(\n\tfunction (delay, document) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$perform,\n\t\t\t$elm$core$Basics$always(\n\t\t\t\t$author$project$Main$FetchDocument(document)),\n\t\t\t$elm$core$Process$sleep(delay));\n\t});\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $author$project$Main$init = function (flags) {\n\tvar _v0 = A2($elm$json$Json$Decode$decodeValue, $author$project$Main$flagsDecoder, flags);\n\tif (_v0.$ === 'Ok') {\n\t\tvar successfulFlag = _v0.a;\n\t\tvar model = $author$project$Main$ValidModel(\n\t\t\t{checkedDocuments: successfulFlag.documents, currentDocumentId: $elm$core$Maybe$Nothing, currentTime: $elm$core$Maybe$Nothing, documents: successfulFlag.documents, downloadState: $author$project$Main$NotDownloading, droppedFiles: _List_Nil, filterFileValue: '', haveQueriedDocuments: false, originalMessage: successfulFlag.originalMessage, project_id: successfulFlag.project_id, user: successfulFlag.user});\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t$author$project$Main$getCurrentTime,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$List$indexedMap,\n\t\t\t\t\t\tfunction (x) {\n\t\t\t\t\t\t\treturn $author$project$Main$getRelatedMessagesTask(x * 500);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccessfulFlag.documents))));\n\t} else {\n\t\tvar error = _v0.a;\n\t\treturn _Utils_Tuple2(\n\t\t\t$author$project$Main$ErrorModel(\n\t\t\t\t$elm$json$Json$Decode$errorToString(error)),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t}\n};\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$FileReceiverPort$fileReceiver = _Platform_incomingPort('fileReceiver', $elm$json$Json$Decode$value);\nvar $author$project$Main$FileDropped = function (a) {\n\treturn {$: 'FileDropped', a: a};\n};\nvar $author$project$Main$Recv = function (a) {\n\treturn {$: 'Recv', a: a};\n};\nvar $author$project$Main$receiveFile = function (json) {\n\tvar _v0 = A2($elm$json$Json$Decode$decodeValue, $author$project$Main$metaDataDecoder, json);\n\tif (_v0.$ === 'Ok') {\n\t\tvar fileMetaData = _v0.a;\n\t\treturn $author$project$Main$FileDropped(fileMetaData);\n\t} else {\n\t\tvar error = _v0.a;\n\t\treturn $author$project$Main$Recv(\n\t\t\t$elm$json$Json$Decode$errorToString(error));\n\t}\n};\nvar $author$project$Main$subscriptions = function (_v0) {\n\treturn $author$project$FileReceiverPort$fileReceiver($author$project$Main$receiveFile);\n};\nvar $author$project$Main$InTheMiddleOfDownloading = {$: 'InTheMiddleOfDownloading'};\nvar $elm$core$List$any = F2(\n\tfunction (isOkay, list) {\n\t\tany:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tif (isOkay(x)) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$isOkay = isOkay,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tisOkay = $temp$isOkay;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue any;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$file$File$Download$bytes = F3(\n\tfunction (name, mime, content) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$perform,\n\t\t\t$elm$core$Basics$never,\n\t\t\tA3(\n\t\t\t\t_File_download,\n\t\t\t\tname,\n\t\t\t\tmime,\n\t\t\t\t_File_makeBytesSafeForInternetExplorer(content)));\n\t});\nvar $author$project$Main$HandleZipDownloads = function (a) {\n\treturn {$: 'HandleZipDownloads', a: a};\n};\nvar $elm$url$Url$Builder$toQueryPair = function (_v0) {\n\tvar key = _v0.a;\n\tvar value = _v0.b;\n\treturn key + ('=' + value);\n};\nvar $elm$url$Url$Builder$toQuery = function (parameters) {\n\tif (!parameters.b) {\n\t\treturn '';\n\t} else {\n\t\treturn '?' + A2(\n\t\t\t$elm$core$String$join,\n\t\t\t'&',\n\t\t\tA2($elm$core$List$map, $elm$url$Url$Builder$toQueryPair, parameters));\n\t}\n};\nvar $elm$url$Url$Builder$absolute = F2(\n\tfunction (pathSegments, parameters) {\n\t\treturn '/' + (A2($elm$core$String$join, '/', pathSegments) + $elm$url$Url$Builder$toQuery(parameters));\n\t});\nvar $elm$json$Json$Encode$int = _Json_wrap;\nvar $elm$json$Json$Encode$object = function (pairs) {\n\treturn _Json_wrap(\n\t\tA3(\n\t\t\t$elm$core$List$foldl,\n\t\t\tF2(\n\t\t\t\tfunction (_v0, obj) {\n\t\t\t\t\tvar k = _v0.a;\n\t\t\t\t\tvar v = _v0.b;\n\t\t\t\t\treturn A3(_Json_addField, k, v, obj);\n\t\t\t\t}),\n\t\t\t_Json_emptyObject(_Utils_Tuple0),\n\t\t\tpairs));\n};\nvar $author$project$Main$documentEncoder = function (document) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'id',\n\t\t\t\t$elm$json$Json$Encode$int(document.id))\n\t\t\t]));\n};\nvar $elm$json$Json$Encode$list = F2(\n\tfunction (func, entries) {\n\t\treturn _Json_wrap(\n\t\t\tA3(\n\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t_Json_addEntry(func),\n\t\t\t\t_Json_emptyArray(_Utils_Tuple0),\n\t\t\t\tentries));\n\t});\nvar $author$project$Main$encodeDownloadZipFiles = function (documents) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'message',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'documents_attributes',\n\t\t\t\t\t\t\tA2($elm$json$Json$Encode$list, $author$project$Main$documentEncoder, documents))\n\t\t\t\t\t\t])))\n\t\t\t]));\n};\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'BadStatus_', a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 'BadUrl_', a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'GoodStatus_', a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 'NetworkError_'};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 'Receiving', a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 'Sending', a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 'Timeout_'};\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (maybe.$ === 'Just') {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1.$) {\n\t\t\t\t\tcase 'LT':\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 'EQ':\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = {$: 'Black'};\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$Red = {$: 'Red'};\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1.$) {\n\t\t\t\tcase 'LT':\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 'EQ':\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {\n\t\tif ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr.$ === 'Black') {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {\n\t\tif ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr.$ === 'Black') {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {\n\t\t\t\t\tif (right.d.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\t\tif (right.d.a.$ === 'Black') {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor.$ === 'Black') {\n\t\t\tif ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === 'RBNode_elm_builtin') {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $elm$http$Http$expectBytesResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'arraybuffer',\n\t\t\t_Http_toDataView,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $elm$http$Http$BadBody = function (a) {\n\treturn {$: 'BadBody', a: a};\n};\nvar $elm$http$Http$BadStatus = function (a) {\n\treturn {$: 'BadStatus', a: a};\n};\nvar $elm$http$Http$BadUrl = function (a) {\n\treturn {$: 'BadUrl', a: a};\n};\nvar $elm$http$Http$NetworkError = {$: 'NetworkError'};\nvar $elm$http$Http$Timeout = {$: 'Timeout'};\nvar $elm$core$Result$mapError = F2(\n\tfunction (f, result) {\n\t\tif (result.$ === 'Ok') {\n\t\t\tvar v = result.a;\n\t\t\treturn $elm$core$Result$Ok(v);\n\t\t} else {\n\t\t\tvar e = result.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tf(e));\n\t\t}\n\t});\nvar $author$project$Main$httpResponseToBytes = function (response) {\n\tswitch (response.$) {\n\t\tcase 'GoodStatus_':\n\t\t\tvar body = response.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$Result$mapError,\n\t\t\t\t$elm$http$Http$BadBody,\n\t\t\t\t$elm$core$Result$Ok(body));\n\t\tcase 'BadUrl_':\n\t\t\tvar url = response.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t$elm$http$Http$BadUrl(url));\n\t\tcase 'Timeout_':\n\t\t\treturn $elm$core$Result$Err($elm$http$Http$Timeout);\n\t\tcase 'NetworkError_':\n\t\t\treturn $elm$core$Result$Err($elm$http$Http$NetworkError);\n\t\tdefault:\n\t\t\tvar metadata = response.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t$elm$http$Http$BadStatus(metadata.statusCode));\n\t}\n};\nvar $elm$http$Http$jsonBody = function (value) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'application/json',\n\t\tA2($elm$json$Json$Encode$encode, 0, value));\n};\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 'Request', a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {reqs: reqs, subs: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (cmd.$ === 'Cancel') {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 'Nothing') {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.tracker;\n\t\t\t\t\t\t\tif (_v4.$ === 'Nothing') {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.reqs));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.subs)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 'Cancel', a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (cmd.$ === 'Cancel') {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\tallowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,\n\t\t\t\t\tbody: r.body,\n\t\t\t\t\texpect: A2(_Http_mapExpect, func, r.expect),\n\t\t\t\t\theaders: r.headers,\n\t\t\t\t\tmethod: r.method,\n\t\t\t\t\ttimeout: r.timeout,\n\t\t\t\t\ttracker: r.tracker,\n\t\t\t\t\turl: r.url\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'MySub', a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url}));\n};\nvar $elm$http$Http$post = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{body: r.body, expect: r.expect, headers: _List_Nil, method: 'POST', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});\n};\nvar $author$project$Main$createZipfiles = F2(\n\tfunction (model, documents) {\n\t\treturn $elm$http$Http$post(\n\t\t\t{\n\t\t\t\tbody: $elm$http$Http$jsonBody(\n\t\t\t\t\t$author$project$Main$encodeDownloadZipFiles(documents)),\n\t\t\t\texpect: A2($elm$http$Http$expectBytesResponse, $author$project$Main$HandleZipDownloads, $author$project$Main$httpResponseToBytes),\n\t\t\t\turl: A2(\n\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[model.originalMessage.token, 'documents']),\n\t\t\t\t\t_List_Nil)\n\t\t\t});\n\t});\nvar $elm$core$List$filter = F2(\n\tfunction (isGood, list) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, xs) {\n\t\t\t\t\treturn isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\tlist);\n\t});\nvar $elm$core$String$toUpper = _String_toUpper;\nvar $author$project$Main$filteredFiles = F2(\n\tfunction (filterFileValue, documents) {\n\t\treturn A2(\n\t\t\t$elm$core$List$filter,\n\t\t\tfunction (d) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$String$contains,\n\t\t\t\t\t$elm$core$String$toUpper(filterFileValue),\n\t\t\t\t\t$elm$core$String$toUpper(d.file_data.filename));\n\t\t\t},\n\t\t\tdocuments);\n\t});\nvar $author$project$Main$GetConversationMessages = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'GetConversationMessages', a: a, b: b};\n\t});\nvar $author$project$Main$conversationMessagesDecoder = $elm$json$Json$Decode$list($author$project$Main$conversationMessageDecoder);\nvar $elm$json$Json$Decode$decodeString = _Json_runOnString;\nvar $elm$http$Http$expectStringResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'',\n\t\t\t$elm$core$Basics$identity,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $elm$http$Http$resolve = F2(\n\tfunction (toResult, response) {\n\t\tswitch (response.$) {\n\t\t\tcase 'BadUrl_':\n\t\t\t\tvar url = response.a;\n\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t$elm$http$Http$BadUrl(url));\n\t\t\tcase 'Timeout_':\n\t\t\t\treturn $elm$core$Result$Err($elm$http$Http$Timeout);\n\t\t\tcase 'NetworkError_':\n\t\t\t\treturn $elm$core$Result$Err($elm$http$Http$NetworkError);\n\t\t\tcase 'BadStatus_':\n\t\t\t\tvar metadata = response.a;\n\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t$elm$http$Http$BadStatus(metadata.statusCode));\n\t\t\tdefault:\n\t\t\t\tvar body = response.b;\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Result$mapError,\n\t\t\t\t\t$elm$http$Http$BadBody,\n\t\t\t\t\ttoResult(body));\n\t\t}\n\t});\nvar $elm$http$Http$expectJson = F2(\n\tfunction (toMsg, decoder) {\n\t\treturn A2(\n\t\t\t$elm$http$Http$expectStringResponse,\n\t\t\ttoMsg,\n\t\t\t$elm$http$Http$resolve(\n\t\t\t\tfunction (string) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Result$mapError,\n\t\t\t\t\t\t$elm$json$Json$Decode$errorToString,\n\t\t\t\t\t\tA2($elm$json$Json$Decode$decodeString, decoder, string));\n\t\t\t\t}));\n\t});\nvar $elm$http$Http$emptyBody = _Http_emptyBody;\nvar $elm$http$Http$get = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{body: $elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});\n};\nvar $author$project$Main$getRelatedMessages = F2(\n\tfunction (model, document) {\n\t\treturn $elm$http$Http$get(\n\t\t\t{\n\t\t\t\texpect: A2(\n\t\t\t\t\t$elm$http$Http$expectJson,\n\t\t\t\t\t$author$project$Main$GetConversationMessages(document.id),\n\t\t\t\t\t$author$project$Main$conversationMessagesDecoder),\n\t\t\t\turl: A2(\n\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t'projects',\n\t\t\t\t\t\t\t$elm$core$String$fromInt(model.project_id),\n\t\t\t\t\t\t\t'user',\n\t\t\t\t\t\t\t$elm$core$String$fromInt(model.user.id),\n\t\t\t\t\t\t\t'file_sha1',\n\t\t\t\t\t\t\tdocument.file_sha1\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil)\n\t\t\t});\n\t});\nvar $elm$core$List$member = F2(\n\tfunction (x, xs) {\n\t\treturn A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (a) {\n\t\t\t\treturn _Utils_eq(a, x);\n\t\t\t},\n\t\t\txs);\n\t});\nvar $author$project$Main$update = F2(\n\tfunction (message, unionModel) {\n\t\tif (unionModel.$ === 'ValidModel') {\n\t\t\tvar model = unionModel.a;\n\t\t\tswitch (message.$) {\n\t\t\t\tcase 'GetConversationMessages':\n\t\t\t\t\tvar id = message.a;\n\t\t\t\t\tvar response = message.b;\n\t\t\t\t\tif (response.$ === 'Ok') {\n\t\t\t\t\t\tvar conversationMessages = response.a;\n\t\t\t\t\t\tvar updateConversationMessages = function (document) {\n\t\t\t\t\t\t\treturn _Utils_eq(document.id, id) ? _Utils_update(\n\t\t\t\t\t\t\t\tdocument,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconversationMessages: A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\t\t\t\t\t\tfunction (x) {\n\t\t\t\t\t\t\t\t\t\t\treturn !_Utils_eq(x.id, model.originalMessage.id);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tconversationMessages)\n\t\t\t\t\t\t\t\t}) : document;\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdocuments: A2($elm$core$List$map, updateConversationMessages, model.documents),\n\t\t\t\t\t\t\t\t\t\thaveQueriedDocuments: true\n\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar error = response.a;\n\t\t\t\t\t\tvar errorString = function () {\n\t\t\t\t\t\t\tswitch (error.$) {\n\t\t\t\t\t\t\t\tcase 'BadUrl':\n\t\t\t\t\t\t\t\t\tvar url = error.a;\n\t\t\t\t\t\t\t\t\treturn 'The URL ' + (url + ' was invalid');\n\t\t\t\t\t\t\t\tcase 'Timeout':\n\t\t\t\t\t\t\t\t\treturn 'Unable to reach the server, try again';\n\t\t\t\t\t\t\t\tcase 'NetworkError':\n\t\t\t\t\t\t\t\t\treturn 'Unable to reach the server, check your network connection';\n\t\t\t\t\t\t\t\tcase 'BadStatus':\n\t\t\t\t\t\t\t\t\tswitch (error.a) {\n\t\t\t\t\t\t\t\t\t\tcase 500:\n\t\t\t\t\t\t\t\t\t\t\treturn 'The server had a problem, try again later';\n\t\t\t\t\t\t\t\t\t\tcase 400:\n\t\t\t\t\t\t\t\t\t\t\treturn 'Verify your information and try again';\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\treturn 'Unknown error';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tvar errorMessage = error.a;\n\t\t\t\t\t\t\t\t\treturn errorMessage;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$Main$ErrorModel(errorString),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\t}\n\t\t\t\tcase 'SetCurrentDocument':\n\t\t\t\t\tvar documentId = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcurrentDocumentId: $elm$core$Maybe$Just(documentId)\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'CancelCurrentDocument':\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{currentDocumentId: $elm$core$Maybe$Nothing})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'SetTime':\n\t\t\t\t\tvar time = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcurrentTime: $elm$core$Maybe$Just(time)\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'Recv':\n\t\t\t\t\tvar error = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ErrorModel(error),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'FileDropped':\n\t\t\t\t\tvar fileData = message.a;\n\t\t\t\t\tvar checkedDocuments = A2(\n\t\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\treturn !_Utils_eq(d.file_sha1, fileData.file_sha1);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodel.checkedDocuments);\n\t\t\t\t\treturn A2($elm$core$List$member, fileData, model.droppedFiles) ? _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{checkedDocuments: checkedDocuments})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none) : _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcheckedDocuments: checkedDocuments,\n\t\t\t\t\t\t\t\t\tdroppedFiles: A2($elm$core$List$cons, fileData, model.droppedFiles)\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'FetchDocument':\n\t\t\t\t\tvar document = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(model),\n\t\t\t\t\t\tA2($author$project$Main$getRelatedMessages, model, document));\n\t\t\t\tcase 'StartDownloadFilteredZipFiles':\n\t\t\t\t\tvar filteredDocuments = A2($author$project$Main$filteredFiles, model.filterFileValue, model.documents);\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{downloadState: $author$project$Main$InTheMiddleOfDownloading})),\n\t\t\t\t\t\tA2($author$project$Main$createZipfiles, model, filteredDocuments));\n\t\t\t\tcase 'StartDownloadZipFiles':\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{downloadState: $author$project$Main$InTheMiddleOfDownloading})),\n\t\t\t\t\t\tA2($author$project$Main$createZipfiles, model, model.checkedDocuments));\n\t\t\t\tcase 'TickDocument':\n\t\t\t\t\tvar document = message.a;\n\t\t\t\t\tvar checkedDocuments = A2(\n\t\t\t\t\t\t$elm$core$List$any,\n\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\treturn _Utils_eq(d.id, document.id);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodel.checkedDocuments) ? model.checkedDocuments : A2($elm$core$List$cons, document, model.checkedDocuments);\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{checkedDocuments: checkedDocuments})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'UntickDocument':\n\t\t\t\t\tvar document = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcheckedDocuments: A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\t\t\t\t\treturn !_Utils_eq(d.id, document.id);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tmodel.checkedDocuments)\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'HandleZipDownloads':\n\t\t\t\t\tvar result = message.a;\n\t\t\t\t\tif (result.$ === 'Err') {\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t{downloadState: $author$project$Main$NotDownloading})),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar response = result.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t{downloadState: $author$project$Main$NotDownloading})),\n\t\t\t\t\t\t\tA3($elm$file$File$Download$bytes, model.originalMessage.subject + '.zip', 'application/zip', response));\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar filterFileValue = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$Main$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{filterFileValue: filterFileValue})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t}\n\t\t} else {\n\t\t\tvar errorString = unionModel.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t$author$project$Main$ErrorModel(errorString),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $author$project$Main$FilterFiles = function (a) {\n\treturn {$: 'FilterFiles', a: a};\n};\nvar $author$project$Main$StartDownloadFilteredZipFiles = {$: 'StartDownloadFilteredZipFiles'};\nvar $author$project$Main$StartDownloadZipFiles = {$: 'StartDownloadZipFiles'};\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $elm$html$Html$button = _VirtualDom_node('button');\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$json$Json$Encode$bool = _Json_wrap;\nvar $elm$html$Html$Attributes$boolProperty = F2(\n\tfunction (key, bool) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$bool(bool));\n\t});\nvar $elm$html$Html$Attributes$disabled = $elm$html$Html$Attributes$boolProperty('disabled');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$virtual_dom$VirtualDom$attribute = F2(\n\tfunction (key, value) {\n\t\treturn A2(\n\t\t\t_VirtualDom_attribute,\n\t\t\t_VirtualDom_noOnOrFormAction(key),\n\t\t\t_VirtualDom_noJavaScriptOrHtmlUri(value));\n\t});\nvar $elm$html$Html$Attributes$attribute = $elm$virtual_dom$VirtualDom$attribute;\nvar $author$project$Main$CancelCurrentDocument = {$: 'CancelCurrentDocument'};\nvar $author$project$Main$SetCurrentDocument = function (a) {\n\treturn {$: 'SetCurrentDocument', a: a};\n};\nvar $author$project$Main$TickDocument = function (a) {\n\treturn {$: 'TickDocument', a: a};\n};\nvar $author$project$Main$UntickDocument = function (a) {\n\treturn {$: 'UntickDocument', a: a};\n};\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$Attributes$checked = $elm$html$Html$Attributes$boolProperty('checked');\nvar $elm$core$String$concat = function (strings) {\n\treturn A2($elm$core$String$join, '', strings);\n};\nvar $elm$html$Html$Attributes$download = function (fileName) {\n\treturn A2($elm$html$Html$Attributes$stringProperty, 'download', fileName);\n};\nvar $elm$core$List$head = function (list) {\n\tif (list.b) {\n\t\tvar x = list.a;\n\t\tvar xs = list.b;\n\t\treturn $elm$core$Maybe$Just(x);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Main$getCurrentDocument = F2(\n\tfunction (maybeCurrentDocumentId, documents) {\n\t\tif (maybeCurrentDocumentId.$ === 'Just') {\n\t\t\tvar currentDocumentId = maybeCurrentDocumentId.a;\n\t\t\treturn $elm$core$List$head(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\treturn _Utils_eq(d.id, currentDocumentId);\n\t\t\t\t\t},\n\t\t\t\t\tdocuments));\n\t\t} else {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t});\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$input = _VirtualDom_node('input');\nvar $elm$html$Html$label = _VirtualDom_node('label');\nvar $elm$core$Maybe$map = F2(\n\tfunction (f, maybe) {\n\t\tif (maybe.$ === 'Just') {\n\t\t\tvar value = maybe.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tf(value));\n\t\t} else {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t});\nvar $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target');\nvar $elm$html$Html$td = _VirtualDom_node('td');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$html$Html$tr = _VirtualDom_node('tr');\nvar $author$project$Main$messageRow = function (conversationMessage) {\n\tvar displaySubject = ($elm$core$String$length(conversationMessage.subject) > 35) ? (A3($elm$core$String$slice, 0, 35, conversationMessage.subject) + '...') : A3($elm$core$String$slice, 0, 35, conversationMessage.subject);\n\treturn A2(\n\t\t$elm$html$Html$tr,\n\t\t_List_Nil,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$td,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('_blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t'messages',\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(conversationMessage.id)\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t_List_Nil))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text(displaySubject)\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $elm$html$Html$table = _VirtualDom_node('table');\nvar $elm$html$Html$tbody = _VirtualDom_node('tbody');\nvar $author$project$Main$messagesTable = function (document) {\n\treturn A2(\n\t\t$elm$html$Html$table,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('table table-bordered table-sm')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$tbody,\n\t\t\t\t_List_Nil,\n\t\t\t\tA2($elm$core$List$map, $author$project$Main$messageRow, document.conversationMessages))\n\t\t\t]));\n};\nvar $elm$virtual_dom$VirtualDom$Normal = function (a) {\n\treturn {$: 'Normal', a: a};\n};\nvar $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;\nvar $elm$html$Html$Events$on = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$Normal(decoder));\n\t});\nvar $elm$html$Html$Events$onClick = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$on,\n\t\t'click',\n\t\t$elm$json$Json$Decode$succeed(msg));\n};\nvar $elm$html$Html$span = _VirtualDom_node('span');\nvar $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type');\nvar $elm$core$Maybe$withDefault = F2(\n\tfunction (_default, maybe) {\n\t\tif (maybe.$ === 'Just') {\n\t\t\tvar value = maybe.a;\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn _default;\n\t\t}\n\t});\nvar $author$project$Main$documentRow = F3(\n\tfunction (model, documents, document) {\n\t\tvar shouldWeDownload = A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (df) {\n\t\t\t\treturn _Utils_eq(df.file_sha1, document.file_data.file_sha1) && _Utils_eq(df.size, document.file_data.size);\n\t\t\t},\n\t\t\tmodel.droppedFiles) ? A2(\n\t\t\t$elm$html$Html$span,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('text-danger d-inline-flex ms-1 h-50')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text(' - No need to download - already have this file')\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$span,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('d-inline-flex h-50')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('')\n\t\t\t\t]));\n\t\tvar messageTable = function () {\n\t\t\tvar _v1 = A2($author$project$Main$getCurrentDocument, model.currentDocumentId, documents);\n\t\t\tif (_v1.$ === 'Just') {\n\t\t\t\tvar currentDocument = _v1.a;\n\t\t\t\treturn _Utils_eq(currentDocument.id, document.id) ? A2(\n\t\t\t\t\t$elm$html$Html$td,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$author$project$Main$messagesTable(currentDocument)\n\t\t\t\t\t\t])) : A2($elm$html$Html$td, _List_Nil, _List_Nil);\n\t\t\t} else {\n\t\t\t\treturn A2($elm$html$Html$td, _List_Nil, _List_Nil);\n\t\t\t}\n\t\t}();\n\t\tvar isTheRowCurrentNew = A2(\n\t\t\t$elm$core$Basics$composeR,\n\t\t\t$elm$core$Maybe$map(\n\t\t\t\tfunction (x) {\n\t\t\t\t\treturn _Utils_eq(x, document.id);\n\t\t\t\t}),\n\t\t\t$elm$core$Maybe$withDefault(false));\n\t\tvar setCurrentRowClass = isTheRowCurrentNew(model.currentDocumentId) ? $elm$html$Html$Attributes$class('table-warning') : $elm$html$Html$Attributes$class('table-light');\n\t\tvar isTheRowCurrent = function () {\n\t\t\tvar _v0 = model.currentDocumentId;\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar currentDocumentId = _v0.a;\n\t\t\t\treturn _Utils_eq(currentDocumentId, document.id) ? true : false;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}();\n\t\tvar displayInvestigateButtonOrNothing = model.haveQueriedDocuments ? ((!$elm$core$List$length(document.conversationMessages)) ? A2(\n\t\t\t$elm$html$Html$td,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('No')\n\t\t\t\t])) : (isTheRowCurrent ? A2(\n\t\t\t$elm$html$Html$td,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-warning btn-sm'),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onClick($author$project$Main$CancelCurrentDocument)\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(\n\t\t\t\t\t\t\t$elm$core$String$concat(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'Cancel View',\n\t\t\t\t\t\t\t\t\t\t' (',\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$length(document.conversationMessages)),\n\t\t\t\t\t\t\t\t\t\t')'\n\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t]))\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$td,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-info btn-sm'),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t$author$project$Main$SetCurrentDocument(document.id))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(\n\t\t\t\t\t\t\t$elm$core$String$concat(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'Yes',\n\t\t\t\t\t\t\t\t\t\t' (',\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$length(document.conversationMessages)),\n\t\t\t\t\t\t\t\t\t\t')'\n\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t]))\n\t\t\t\t])))) : A2(\n\t\t\t$elm$html$Html$td,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('We\\'re searching through right now! Will be done soon!')\n\t\t\t\t]));\n\t\tvar checkbox = A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (d) {\n\t\t\t\treturn _Utils_eq(d.id, document.id);\n\t\t\t},\n\t\t\tmodel.checkedDocuments) ? A2(\n\t\t\t$elm$html$Html$label,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('form-label')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('checkbox'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$checked(true),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t$author$project$Main$UntickDocument(document))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$elm$html$Html$text('Yes')\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$label,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('form-label')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('checkbox'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$checked(false),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t$author$project$Main$TickDocument(document))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$elm$html$Html$text('No')\n\t\t\t\t]));\n\t\treturn A2(\n\t\t\t$elm$html$Html$tr,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$td,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$download(document.file_data.filename),\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t'documents',\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(document.id)\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_Nil))\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$text(document.file_data.filename)\n\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t])),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$td,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[checkbox, shouldWeDownload])),\n\t\t\t\t\tdisplayInvestigateButtonOrNothing,\n\t\t\t\t\tmessageTable\n\t\t\t\t]));\n\t});\nvar $elm$html$Html$th = _VirtualDom_node('th');\nvar $elm$html$Html$thead = _VirtualDom_node('thead');\nvar $author$project$Main$documentsTable = function (model) {\n\tvar columnHeading = function () {\n\t\tvar _v0 = A2($author$project$Main$getCurrentDocument, model.currentDocumentId, model.documents);\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar document = _v0.a;\n\t\t\treturn 'Other Relevant Messages for ' + document.file_data.filename;\n\t\t} else {\n\t\t\treturn 'Other Relevant Messages for ';\n\t\t}\n\t}();\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('table-responsive')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$table,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('table table-bordered table-sm')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$thead,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$tr,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('File Name')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-toggle', 'tooltip'),\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-placement', 'top'),\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'title', 'Drag and drop some files from your computer to determine whether you need to download the following files.')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Download?')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-toggle', 'tooltip'),\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-placement', 'top'),\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'title', 'Has this file been seen in other messages involving me?')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Sent multiple times?')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-toggle', 'tooltip'),\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'data-bs-placement', 'top'),\n\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$attribute, 'title', 'Lists other messages where you have seen this file before')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Messages')\n\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$tbody,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\tA2($author$project$Main$documentRow, model, model.documents),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$core$List$filter,\n\t\t\t\t\t\t\t\tfunction (d) {\n\t\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$contains,\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$toUpper(model.filterFileValue),\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$toUpper(d.file_data.filename));\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tmodel.documents)))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $elm$html$Html$h1 = _VirtualDom_node('h1');\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$Events$alwaysStop = function (x) {\n\treturn _Utils_Tuple2(x, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {\n\treturn {$: 'MayStopPropagation', a: a};\n};\nvar $elm$html$Html$Events$stopPropagationOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayStopPropagation(decoder));\n\t});\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$html$Html$Events$targetValue = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['target', 'value']),\n\t$elm$json$Json$Decode$string);\nvar $elm$html$Html$Events$onInput = function (tagger) {\n\treturn A2(\n\t\t$elm$html$Html$Events$stopPropagationOn,\n\t\t'input',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysStop,\n\t\t\tA2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue)));\n};\nvar $elm$html$Html$p = _VirtualDom_node('p');\nvar $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder');\nvar $elm$time$Time$posixToMillis = function (_v0) {\n\tvar millis = _v0.a;\n\treturn millis;\n};\nvar $elm$virtual_dom$VirtualDom$style = _VirtualDom_style;\nvar $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style;\nvar $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value');\nvar $author$project$Main$view = function (unionModel) {\n\tif (unionModel.$ === 'ErrorModel') {\n\t\tvar message = unionModel.a;\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t} else {\n\t\tvar model = unionModel.a;\n\t\tvar message = function () {\n\t\t\tvar _v2 = model.currentTime;\n\t\t\tif (_v2.$ === 'Nothing') {\n\t\t\t\treturn 'we don\\'t have a current time registered';\n\t\t\t} else {\n\t\t\t\tvar time = _v2.a;\n\t\t\t\treturn (($elm$time$Time$posixToMillis(time) - $elm$time$Time$posixToMillis(model.originalMessage.created_at)) < 20000) ? 'Please refresh your browser in 20 seconds for any applicable attachments to appear' : 'No attachments on this message';\n\t\t\t}\n\t\t}();\n\t\tvar filteredFileDownloadButton = ((!$elm$core$String$isEmpty(model.filterFileValue)) && (!$elm$core$List$isEmpty(\n\t\t\tA2($author$project$Main$filteredFiles, model.filterFileValue, model.documents)))) ? A2(\n\t\t\t$elm$html$Html$button,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Events$onClick($author$project$Main$StartDownloadFilteredZipFiles),\n\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-sm btn-outline-primary')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('Download filtered files only')\n\t\t\t\t])) : $elm$html$Html$text('');\n\t\tvar donwloadButton = function () {\n\t\t\tif (!$elm$core$String$isEmpty(model.filterFileValue)) {\n\t\t\t\treturn $elm$html$Html$text('');\n\t\t\t} else {\n\t\t\t\tvar _v1 = model.downloadState;\n\t\t\t\tif (_v1.$ === 'NotDownloading') {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick($author$project$Main$StartDownloadZipFiles),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-sm btn-outline-primary')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('Download Checked Files (.zip)')\n\t\t\t\t\t\t\t]));\n\t\t\t\t} else {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-warning'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$disabled(true)\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('We\\'re downloading - please wait...we\\'ll be done soon!')\n\t\t\t\t\t\t\t]));\n\t\t\t\t}\n\t\t\t}\n\t\t}();\n\t\tvar appHeight = ($elm$core$List$length(model.documents) > 9) ? A2($elm$html$Html$Attributes$style, 'height', '500px') : A2($elm$html$Html$Attributes$style, 'height', '190px');\n\t\treturn (!$elm$core$List$length(model.documents)) ? A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]))\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('overflow-auto'),\n\t\t\t\t\tappHeight\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tdonwloadButton,\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Filter Files'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.filterFileValue),\n\t\t\t\t\t\t\t$elm$html$Html$Events$onInput($author$project$Main$FilterFiles)\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\tfilteredFileDownloadButton,\n\t\t\t\t\t$author$project$Main$documentsTable(model)\n\t\t\t\t]));\n\t}\n};\nvar $author$project$Main$main = $elm$browser$Browser$element(\n\t{init: $author$project$Main$init, subscriptions: $author$project$Main$subscriptions, update: $author$project$Main$update, view: $author$project$Main$view});\n_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)(0)}});}(this));", "/**\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", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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 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", "/**\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 baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n", "var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n", "(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\nconsole.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**_UNUSED/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**_UNUSED/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0_UNUSED = 0;\nvar _Utils_Tuple0 = { $: '#0' };\n\nfunction _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr_UNUSED(c) { return c; }\nfunction _Utils_chr(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil_UNUSED = { $: 0 };\nvar _List_Nil = { $: '[]' };\n\nfunction _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash_UNUSED(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.start.line === region.end.line)\n\t{\n\t\treturn 'on line ' + region.start.line;\n\t}\n\treturn 'on lines ' + region.start.line + ' through ' + region.end.line;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap(value) { return value.a; }\n\nfunction _Json_wrap_UNUSED(value) { return value; }\nfunction _Json_unwrap_UNUSED(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**_UNUSED/\n\tvar node = args['node'];\n\t//*/\n\t/**/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tmessage: func(record.message),\n\t\tstopPropagation: record.stopPropagation,\n\t\tpreventDefault: record.preventDefault\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.message;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.view;\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.init,\n\t\timpl.update,\n\t\timpl.subscriptions,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.setup && impl.setup(sendToApp)\n\t\t\tvar view = impl.view;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.title) && (_VirtualDom_doc.title = title = doc.title);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.onUrlChange;\n\tvar onUrlRequest = impl.onUrlRequest;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tsetup: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.protocol === next.protocol\n\t\t\t\t\t\t\t&& curr.host === next.host\n\t\t\t\t\t\t\t&& curr.port_.a === next.port_.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tinit: function(flags)\n\t\t{\n\t\t\treturn A3(impl.init, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tview: impl.view,\n\t\tupdate: impl.update,\n\t\tsubscriptions: impl.subscriptions\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { hidden: 'hidden', change: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { hidden: 'mozHidden', change: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { hidden: 'msHidden', change: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }\n\t\t: { hidden: 'hidden', change: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\tscene: _Browser_getScene(),\n\t\tviewport: {\n\t\t\tx: _Browser_window.pageXOffset,\n\t\t\ty: _Browser_window.pageYOffset,\n\t\t\twidth: _Browser_doc.documentElement.clientWidth,\n\t\t\theight: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\twidth: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\theight: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\tscene: {\n\t\t\t\twidth: node.scrollWidth,\n\t\t\t\theight: node.scrollHeight\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tx: node.scrollLeft,\n\t\t\t\ty: node.scrollTop,\n\t\t\t\twidth: node.clientWidth,\n\t\t\t\theight: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\tscene: _Browser_getScene(),\n\t\t\tviewport: {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\twidth: _Browser_doc.documentElement.clientWidth,\n\t\t\t\theight: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\telement: {\n\t\t\t\tx: x + rect.left,\n\t\t\t\ty: y + rect.top,\n\t\t\t\twidth: rect.width,\n\t\t\t\theight: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\n\nfunction _Time_now(millisToPosix)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(millisToPosix(Date.now())));\n\t});\n}\n\nvar _Time_setInterval = F2(function(interval, task)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval);\n\t\treturn function() { clearInterval(id); };\n\t});\n});\n\nfunction _Time_here()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(\n\t\t\tA2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil)\n\t\t));\n\t});\n}\n\n\nfunction _Time_getZoneName()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\tvar name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tvar name = $elm$time$Time$Offset(new Date().getTimezoneOffset());\n\t\t}\n\t\tcallback(_Scheduler_succeed(name));\n\t});\n}\n\n\n\n\n// STRINGS\n\n\nvar _Parser_isSubString = F5(function(smallString, offset, row, col, bigString)\n{\n\tvar smallLength = smallString.length;\n\tvar isGood = offset + smallLength <= bigString.length;\n\n\tfor (var i = 0; isGood && i < smallLength; )\n\t{\n\t\tvar code = bigString.charCodeAt(offset);\n\t\tisGood =\n\t\t\tsmallString[i++] === bigString[offset++]\n\t\t\t&& (\n\t\t\t\tcode === 0x000A /* \\n */\n\t\t\t\t\t? ( row++, col=1 )\n\t\t\t\t\t: ( col++, (code & 0xF800) === 0xD800 ? smallString[i++] === bigString[offset++] : 1 )\n\t\t\t)\n\t}\n\n\treturn _Utils_Tuple3(isGood ? offset : -1, row, col);\n});\n\n\n\n// CHARS\n\n\nvar _Parser_isSubChar = F3(function(predicate, offset, string)\n{\n\treturn (\n\t\tstring.length <= offset\n\t\t\t? -1\n\t\t\t:\n\t\t(string.charCodeAt(offset) & 0xF800) === 0xD800\n\t\t\t? (predicate(_Utils_chr(string.substr(offset, 2))) ? offset + 2 : -1)\n\t\t\t:\n\t\t(predicate(_Utils_chr(string[offset]))\n\t\t\t? ((string[offset] === '\\n') ? -2 : (offset + 1))\n\t\t\t: -1\n\t\t)\n\t);\n});\n\n\nvar _Parser_isAsciiCode = F3(function(code, offset, string)\n{\n\treturn string.charCodeAt(offset) === code;\n});\n\n\n\n// NUMBERS\n\n\nvar _Parser_chompBase10 = F2(function(offset, string)\n{\n\tfor (; offset < string.length; offset++)\n\t{\n\t\tvar code = string.charCodeAt(offset);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn offset;\n\t\t}\n\t}\n\treturn offset;\n});\n\n\nvar _Parser_consumeBase = F3(function(base, offset, string)\n{\n\tfor (var total = 0; offset < string.length; offset++)\n\t{\n\t\tvar digit = string.charCodeAt(offset) - 0x30;\n\t\tif (digit < 0 || base <= digit) break;\n\t\ttotal = base * total + digit;\n\t}\n\treturn _Utils_Tuple2(offset, total);\n});\n\n\nvar _Parser_consumeBase16 = F2(function(offset, string)\n{\n\tfor (var total = 0; offset < string.length; offset++)\n\t{\n\t\tvar code = string.charCodeAt(offset);\n\t\tif (0x30 <= code && code <= 0x39)\n\t\t{\n\t\t\ttotal = 16 * total + code - 0x30;\n\t\t}\n\t\telse if (0x41 <= code && code <= 0x46)\n\t\t{\n\t\t\ttotal = 16 * total + code - 55;\n\t\t}\n\t\telse if (0x61 <= code && code <= 0x66)\n\t\t{\n\t\t\ttotal = 16 * total + code - 87;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn _Utils_Tuple2(offset, total);\n});\n\n\n\n// FIND STRING\n\n\nvar _Parser_findSubString = F5(function(smallString, offset, row, col, bigString)\n{\n\tvar newOffset = bigString.indexOf(smallString, offset);\n\tvar target = newOffset < 0 ? bigString.length : newOffset + smallString.length;\n\n\twhile (offset < target)\n\t{\n\t\tvar code = bigString.charCodeAt(offset++);\n\t\tcode === 0x000A /* \\n */\n\t\t\t? ( col=1, row++ )\n\t\t\t: ( col++, (code & 0xF800) === 0xD800 && offset++ )\n\t}\n\n\treturn _Utils_Tuple3(newOffset, row, col);\n});\n\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.expect.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a);\n\n\t\ttry {\n\t\t\txhr.open(request.method, request.url, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.url));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.body.a && xhr.setRequestHeader('Content-Type', request.body.a);\n\t\txhr.send(request.body.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.timeout.a || 0;\n\txhr.responseType = request.expect.d;\n\txhr.withCredentials = request.allowCookiesFromOtherDomains;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\turl: xhr.responseURL,\n\t\tstatusCode: xhr.status,\n\t\tstatusText: xhr.statusText,\n\t\theaders: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tsent: event.loaded,\n\t\t\tsize: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\treceived: event.loaded,\n\t\t\tsize: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $elm$core$Basics$EQ = {$: 'EQ'};\nvar $elm$core$Basics$GT = {$: 'GT'};\nvar $elm$core$Basics$LT = {$: 'LT'};\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === 'RBEmpty_elm_builtin') {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0.a;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (node.$ === 'SubTree') {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 'Err', a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Failure', a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Field', a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Index', a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 'Ok', a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 'OneOf', a: a};\n};\nvar $elm$core$Basics$False = {$: 'False'};\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 'Just', a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 'Nothing'};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 'Field':\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 'Nothing') {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 'Index':\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 'OneOf':\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 'Leaf', a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 'SubTree', a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.nodeListSize) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.tail),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.tail);\n\t\t} else {\n\t\t\tvar treeLen = builder.nodeListSize * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.tail) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.tail);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = {$: 'True'};\nvar $elm$core$Result$isOk = function (result) {\n\tif (result.$ === 'Ok') {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 'Normal':\n\t\t\treturn 0;\n\t\tcase 'MayStopPropagation':\n\t\t\treturn 1;\n\t\tcase 'MayPreventDefault':\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 'External', a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 'Internal', a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = function (a) {\n\treturn {$: 'NotFound', a: a};\n};\nvar $elm$url$Url$Http = {$: 'Http'};\nvar $elm$url$Url$Https = {$: 'Https'};\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 'Nothing') {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t$elm$url$Url$Http,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t$elm$url$Url$Https,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0.a;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = function (a) {\n\treturn {$: 'Perform', a: a};\n};\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0.a;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn _Utils_Tuple0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(_Utils_Tuple0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0.a;\n\t\treturn $elm$core$Task$Perform(\n\t\t\tA2($elm$core$Task$map, tagger, task));\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\t$elm$core$Task$Perform(\n\t\t\t\tA2($elm$core$Task$map, toMessage, task)));\n\t});\nvar $elm$browser$Browser$element = _Browser_element;\nvar $author$project$DocumentSearch$AdjustTimeZone = function (a) {\n\treturn {$: 'AdjustTimeZone', a: a};\n};\nvar $author$project$DocumentSearch$ErrorModel = function (a) {\n\treturn {$: 'ErrorModel', a: a};\n};\nvar $author$project$DocumentSearch$ValidModel = function (a) {\n\treturn {$: 'ValidModel', a: a};\n};\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$json$Json$Decode$int = _Json_decodeInt;\nvar $author$project$DocumentSearch$flagsDecoder = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['project', 'id']),\n\t$elm$json$Json$Decode$int);\nvar $elm$time$Time$Name = function (a) {\n\treturn {$: 'Name', a: a};\n};\nvar $elm$time$Time$Offset = function (a) {\n\treturn {$: 'Offset', a: a};\n};\nvar $elm$time$Time$Zone = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Zone', a: a, b: b};\n\t});\nvar $elm$time$Time$customZone = $elm$time$Time$Zone;\nvar $elm$time$Time$here = _Time_here(_Utils_Tuple0);\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $elm$time$Time$utc = A2($elm$time$Time$Zone, 0, _List_Nil);\nvar $author$project$DocumentSearch$init = function (flags) {\n\tvar _v0 = A2($elm$json$Json$Decode$decodeValue, $author$project$DocumentSearch$flagsDecoder, flags);\n\tif (_v0.$ === 'Ok') {\n\t\tvar projectId = _v0.a;\n\t\treturn _Utils_Tuple2(\n\t\t\t$author$project$DocumentSearch$ValidModel(\n\t\t\t\t{fileInfoList: _List_Nil, projectId: projectId, timeZone: $elm$time$Time$utc}),\n\t\t\tA2($elm$core$Task$perform, $author$project$DocumentSearch$AdjustTimeZone, $elm$time$Time$here));\n\t} else {\n\t\tvar error = _v0.a;\n\t\treturn _Utils_Tuple2(\n\t\t\t$author$project$DocumentSearch$ErrorModel(\n\t\t\t\t$elm$json$Json$Decode$errorToString(error)),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t}\n};\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$FileReceiverPort$fileReceiver = _Platform_incomingPort('fileReceiver', $elm$json$Json$Decode$value);\nvar $author$project$DocumentSearch$FileDropped = function (a) {\n\treturn {$: 'FileDropped', a: a};\n};\nvar $author$project$DocumentSearch$Recv = function (a) {\n\treturn {$: 'Recv', a: a};\n};\nvar $author$project$FileReceiverPort$FileMetaData = F4(\n\tfunction (size, filename, file_sha1, mimeType) {\n\t\treturn {file_sha1: file_sha1, filename: filename, mimeType: mimeType, size: size};\n\t});\nvar $elm$json$Json$Decode$map4 = _Json_map4;\nvar $elm$json$Json$Decode$oneOf = _Json_oneOf;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $author$project$FileReceiverPort$metaDataDecoder = A5(\n\t$elm$json$Json$Decode$map4,\n\t$author$project$FileReceiverPort$FileMetaData,\n\tA2($elm$json$Json$Decode$field, 'size', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'filename', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'sha1', $elm$json$Json$Decode$string),\n\t$elm$json$Json$Decode$oneOf(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$json$Json$Decode$field, 'type', $elm$json$Json$Decode$string),\n\t\t\t\t$elm$json$Json$Decode$succeed('NA')\n\t\t\t])));\nvar $author$project$DocumentSearch$receiveFile = function (json) {\n\tvar _v0 = A2($elm$json$Json$Decode$decodeValue, $author$project$FileReceiverPort$metaDataDecoder, json);\n\tif (_v0.$ === 'Ok') {\n\t\tvar fileMetaData = _v0.a;\n\t\treturn $author$project$DocumentSearch$FileDropped(fileMetaData);\n\t} else {\n\t\tvar error = _v0.a;\n\t\treturn $author$project$DocumentSearch$Recv(\n\t\t\t$elm$json$Json$Decode$errorToString(error));\n\t}\n};\nvar $author$project$DocumentSearch$subscriptions = function (_v0) {\n\treturn $author$project$FileReceiverPort$fileReceiver($author$project$DocumentSearch$receiveFile);\n};\nvar $author$project$DocumentSearch$FileInformation = F2(\n\tfunction (fileData, telegrams) {\n\t\treturn {fileData: fileData, telegrams: telegrams};\n\t});\nvar $author$project$DocumentSearch$GetConversationMessages = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'GetConversationMessages', a: a, b: b};\n\t});\nvar $elm$url$Url$Builder$toQueryPair = function (_v0) {\n\tvar key = _v0.a;\n\tvar value = _v0.b;\n\treturn key + ('=' + value);\n};\nvar $elm$url$Url$Builder$toQuery = function (parameters) {\n\tif (!parameters.b) {\n\t\treturn '';\n\t} else {\n\t\treturn '?' + A2(\n\t\t\t$elm$core$String$join,\n\t\t\t'&',\n\t\t\tA2($elm$core$List$map, $elm$url$Url$Builder$toQueryPair, parameters));\n\t}\n};\nvar $elm$url$Url$Builder$absolute = F2(\n\tfunction (pathSegments, parameters) {\n\t\treturn '/' + (A2($elm$core$String$join, '/', pathSegments) + $elm$url$Url$Builder$toQuery(parameters));\n\t});\nvar $author$project$DocumentSearch$ConversationMessage = F6(\n\tfunction (id, conversation_id, subject, body, token, created_at) {\n\t\treturn {body: body, conversation_id: conversation_id, created_at: created_at, id: id, subject: subject, token: token};\n\t});\nvar $elm$json$Json$Decode$andThen = _Json_andThen;\nvar $elm$json$Json$Decode$fail = _Json_fail;\nvar $elm$parser$Parser$Advanced$Bad = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Bad', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$Good = F3(\n\tfunction (a, b, c) {\n\t\treturn {$: 'Good', a: a, b: b, c: c};\n\t});\nvar $elm$parser$Parser$Advanced$Parser = function (a) {\n\treturn {$: 'Parser', a: a};\n};\nvar $elm$parser$Parser$Advanced$andThen = F2(\n\tfunction (callback, _v0) {\n\t\tvar parseA = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parseA(s0);\n\t\t\t\tif (_v1.$ === 'Bad') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p1 = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\tvar _v2 = callback(a);\n\t\t\t\t\tvar parseB = _v2.a;\n\t\t\t\t\tvar _v3 = parseB(s1);\n\t\t\t\t\tif (_v3.$ === 'Bad') {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar x = _v3.b;\n\t\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar b = _v3.b;\n\t\t\t\t\t\tvar s2 = _v3.c;\n\t\t\t\t\t\treturn A3($elm$parser$Parser$Advanced$Good, p1 || p2, b, s2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$andThen = $elm$parser$Parser$Advanced$andThen;\nvar $elm$parser$Parser$ExpectingEnd = {$: 'ExpectingEnd'};\nvar $elm$parser$Parser$Advanced$AddRight = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'AddRight', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$DeadEnd = F4(\n\tfunction (row, col, problem, contextStack) {\n\t\treturn {col: col, contextStack: contextStack, problem: problem, row: row};\n\t});\nvar $elm$parser$Parser$Advanced$Empty = {$: 'Empty'};\nvar $elm$parser$Parser$Advanced$fromState = F2(\n\tfunction (s, x) {\n\t\treturn A2(\n\t\t\t$elm$parser$Parser$Advanced$AddRight,\n\t\t\t$elm$parser$Parser$Advanced$Empty,\n\t\t\tA4($elm$parser$Parser$Advanced$DeadEnd, s.row, s.col, x, s.context));\n\t});\nvar $elm$parser$Parser$Advanced$end = function (x) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn _Utils_eq(\n\t\t\t\t$elm$core$String$length(s.src),\n\t\t\t\ts.offset) ? A3($elm$parser$Parser$Advanced$Good, false, _Utils_Tuple0, s) : A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, x));\n\t\t});\n};\nvar $elm$parser$Parser$end = $elm$parser$Parser$Advanced$end($elm$parser$Parser$ExpectingEnd);\nvar $elm$parser$Parser$Advanced$isSubChar = _Parser_isSubChar;\nvar $elm$core$Basics$negate = function (n) {\n\treturn -n;\n};\nvar $elm$parser$Parser$Advanced$chompWhileHelp = F5(\n\tfunction (isGood, offset, row, col, s0) {\n\t\tchompWhileHelp:\n\t\twhile (true) {\n\t\t\tvar newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, offset, s0.src);\n\t\t\tif (_Utils_eq(newOffset, -1)) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t_Utils_cmp(s0.offset, offset) < 0,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: col, context: s0.context, indent: s0.indent, offset: offset, row: row, src: s0.src});\n\t\t\t} else {\n\t\t\t\tif (_Utils_eq(newOffset, -2)) {\n\t\t\t\t\tvar $temp$isGood = isGood,\n\t\t\t\t\t\t$temp$offset = offset + 1,\n\t\t\t\t\t\t$temp$row = row + 1,\n\t\t\t\t\t\t$temp$col = 1,\n\t\t\t\t\t\t$temp$s0 = s0;\n\t\t\t\t\tisGood = $temp$isGood;\n\t\t\t\t\toffset = $temp$offset;\n\t\t\t\t\trow = $temp$row;\n\t\t\t\t\tcol = $temp$col;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue chompWhileHelp;\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$isGood = isGood,\n\t\t\t\t\t\t$temp$offset = newOffset,\n\t\t\t\t\t\t$temp$row = row,\n\t\t\t\t\t\t$temp$col = col + 1,\n\t\t\t\t\t\t$temp$s0 = s0;\n\t\t\t\t\tisGood = $temp$isGood;\n\t\t\t\t\toffset = $temp$offset;\n\t\t\t\t\trow = $temp$row;\n\t\t\t\t\tcol = $temp$col;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue chompWhileHelp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$chompWhile = function (isGood) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A5($elm$parser$Parser$Advanced$chompWhileHelp, isGood, s.offset, s.row, s.col, s);\n\t\t});\n};\nvar $elm$parser$Parser$chompWhile = $elm$parser$Parser$Advanced$chompWhile;\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $elm$parser$Parser$Advanced$mapChompedString = F2(\n\tfunction (func, _v0) {\n\t\tvar parse = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Bad') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\tfunc,\n\t\t\t\t\t\t\tA3($elm$core$String$slice, s0.offset, s1.offset, s0.src),\n\t\t\t\t\t\t\ta),\n\t\t\t\t\t\ts1);\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$getChompedString = function (parser) {\n\treturn A2($elm$parser$Parser$Advanced$mapChompedString, $elm$core$Basics$always, parser);\n};\nvar $elm$parser$Parser$getChompedString = $elm$parser$Parser$Advanced$getChompedString;\nvar $elm$parser$Parser$Problem = function (a) {\n\treturn {$: 'Problem', a: a};\n};\nvar $elm$parser$Parser$Advanced$problem = function (x) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, x));\n\t\t});\n};\nvar $elm$parser$Parser$problem = function (msg) {\n\treturn $elm$parser$Parser$Advanced$problem(\n\t\t$elm$parser$Parser$Problem(msg));\n};\nvar $elm$core$Basics$round = _Basics_round;\nvar $elm$parser$Parser$Advanced$succeed = function (a) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A3($elm$parser$Parser$Advanced$Good, false, a, s);\n\t\t});\n};\nvar $elm$parser$Parser$succeed = $elm$parser$Parser$Advanced$succeed;\nvar $elm$core$String$toFloat = _String_toFloat;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$fractionsOfASecondInMs = A2(\n\t$elm$parser$Parser$andThen,\n\tfunction (str) {\n\t\tif ($elm$core$String$length(str) <= 9) {\n\t\t\tvar _v0 = $elm$core$String$toFloat('0.' + str);\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar floatVal = _v0.a;\n\t\t\t\treturn $elm$parser$Parser$succeed(\n\t\t\t\t\t$elm$core$Basics$round(floatVal * 1000));\n\t\t\t} else {\n\t\t\t\treturn $elm$parser$Parser$problem('Invalid float: \\\"' + (str + '\\\"'));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$parser$Parser$problem(\n\t\t\t\t'Expected at most 9 digits, but got ' + $elm$core$String$fromInt(\n\t\t\t\t\t$elm$core$String$length(str)));\n\t\t}\n\t},\n\t$elm$parser$Parser$getChompedString(\n\t\t$elm$parser$Parser$chompWhile($elm$core$Char$isDigit)));\nvar $elm$time$Time$Posix = function (a) {\n\treturn {$: 'Posix', a: a};\n};\nvar $elm$time$Time$millisToPosix = $elm$time$Time$Posix;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts = F6(\n\tfunction (monthYearDayMs, hour, minute, second, ms, utcOffsetMinutes) {\n\t\treturn $elm$time$Time$millisToPosix((((monthYearDayMs + (((hour * 60) * 60) * 1000)) + (((minute - utcOffsetMinutes) * 60) * 1000)) + (second * 1000)) + ms);\n\t});\nvar $elm$parser$Parser$Advanced$map2 = F3(\n\tfunction (func, _v0, _v1) {\n\t\tvar parseA = _v0.a;\n\t\tvar parseB = _v1.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v2 = parseA(s0);\n\t\t\t\tif (_v2.$ === 'Bad') {\n\t\t\t\t\tvar p = _v2.a;\n\t\t\t\t\tvar x = _v2.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t} else {\n\t\t\t\t\tvar p1 = _v2.a;\n\t\t\t\t\tvar a = _v2.b;\n\t\t\t\t\tvar s1 = _v2.c;\n\t\t\t\t\tvar _v3 = parseB(s1);\n\t\t\t\t\tif (_v3.$ === 'Bad') {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar x = _v3.b;\n\t\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar p2 = _v3.a;\n\t\t\t\t\t\tvar b = _v3.b;\n\t\t\t\t\t\tvar s2 = _v3.c;\n\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\t\tp1 || p2,\n\t\t\t\t\t\t\tA2(func, a, b),\n\t\t\t\t\t\t\ts2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$ignorer = F2(\n\tfunction (keepParser, ignoreParser) {\n\t\treturn A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$always, keepParser, ignoreParser);\n\t});\nvar $elm$parser$Parser$ignorer = $elm$parser$Parser$Advanced$ignorer;\nvar $elm$parser$Parser$Advanced$keeper = F2(\n\tfunction (parseFunc, parseArg) {\n\t\treturn A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$apL, parseFunc, parseArg);\n\t});\nvar $elm$parser$Parser$keeper = $elm$parser$Parser$Advanced$keeper;\nvar $elm$parser$Parser$Advanced$Append = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Append', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$oneOfHelp = F3(\n\tfunction (s0, bag, parsers) {\n\t\toneOfHelp:\n\t\twhile (true) {\n\t\t\tif (!parsers.b) {\n\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, false, bag);\n\t\t\t} else {\n\t\t\t\tvar parse = parsers.a.a;\n\t\t\t\tvar remainingParsers = parsers.b;\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\t\tvar step = _v1;\n\t\t\t\t\treturn step;\n\t\t\t\t} else {\n\t\t\t\t\tvar step = _v1;\n\t\t\t\t\tvar p = step.a;\n\t\t\t\t\tvar x = step.b;\n\t\t\t\t\tif (p) {\n\t\t\t\t\t\treturn step;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar $temp$s0 = s0,\n\t\t\t\t\t\t\t$temp$bag = A2($elm$parser$Parser$Advanced$Append, bag, x),\n\t\t\t\t\t\t\t$temp$parsers = remainingParsers;\n\t\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\t\tparsers = $temp$parsers;\n\t\t\t\t\t\tcontinue oneOfHelp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$oneOf = function (parsers) {\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\treturn A3($elm$parser$Parser$Advanced$oneOfHelp, s, $elm$parser$Parser$Advanced$Empty, parsers);\n\t\t});\n};\nvar $elm$parser$Parser$oneOf = $elm$parser$Parser$Advanced$oneOf;\nvar $elm$parser$Parser$Done = function (a) {\n\treturn {$: 'Done', a: a};\n};\nvar $elm$parser$Parser$Loop = function (a) {\n\treturn {$: 'Loop', a: a};\n};\nvar $elm$core$String$append = _String_append;\nvar $elm$parser$Parser$UnexpectedChar = {$: 'UnexpectedChar'};\nvar $elm$parser$Parser$Advanced$chompIf = F2(\n\tfunction (isGood, expecting) {\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s) {\n\t\t\t\tvar newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, s.offset, s.src);\n\t\t\t\treturn _Utils_eq(newOffset, -1) ? A2(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\t\tfalse,\n\t\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, expecting)) : (_Utils_eq(newOffset, -2) ? A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\ttrue,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: 1, context: s.context, indent: s.indent, offset: s.offset + 1, row: s.row + 1, src: s.src}) : A3(\n\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\ttrue,\n\t\t\t\t\t_Utils_Tuple0,\n\t\t\t\t\t{col: s.col + 1, context: s.context, indent: s.indent, offset: newOffset, row: s.row, src: s.src}));\n\t\t\t});\n\t});\nvar $elm$parser$Parser$chompIf = function (isGood) {\n\treturn A2($elm$parser$Parser$Advanced$chompIf, isGood, $elm$parser$Parser$UnexpectedChar);\n};\nvar $elm$parser$Parser$Advanced$loopHelp = F4(\n\tfunction (p, state, callback, s0) {\n\t\tloopHelp:\n\t\twhile (true) {\n\t\t\tvar _v0 = callback(state);\n\t\t\tvar parse = _v0.a;\n\t\t\tvar _v1 = parse(s0);\n\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\tvar p1 = _v1.a;\n\t\t\t\tvar step = _v1.b;\n\t\t\t\tvar s1 = _v1.c;\n\t\t\t\tif (step.$ === 'Loop') {\n\t\t\t\t\tvar newState = step.a;\n\t\t\t\t\tvar $temp$p = p || p1,\n\t\t\t\t\t\t$temp$state = newState,\n\t\t\t\t\t\t$temp$callback = callback,\n\t\t\t\t\t\t$temp$s0 = s1;\n\t\t\t\t\tp = $temp$p;\n\t\t\t\t\tstate = $temp$state;\n\t\t\t\t\tcallback = $temp$callback;\n\t\t\t\t\ts0 = $temp$s0;\n\t\t\t\t\tcontinue loopHelp;\n\t\t\t\t} else {\n\t\t\t\t\tvar result = step.a;\n\t\t\t\t\treturn A3($elm$parser$Parser$Advanced$Good, p || p1, result, s1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar p1 = _v1.a;\n\t\t\t\tvar x = _v1.b;\n\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p || p1, x);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$loop = F2(\n\tfunction (state, callback) {\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s) {\n\t\t\t\treturn A4($elm$parser$Parser$Advanced$loopHelp, false, state, callback, s);\n\t\t\t});\n\t});\nvar $elm$parser$Parser$Advanced$map = F2(\n\tfunction (func, _v0) {\n\t\tvar parse = _v0.a;\n\t\treturn $elm$parser$Parser$Advanced$Parser(\n\t\t\tfunction (s0) {\n\t\t\t\tvar _v1 = parse(s0);\n\t\t\t\tif (_v1.$ === 'Good') {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar a = _v1.b;\n\t\t\t\t\tvar s1 = _v1.c;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tfunc(a),\n\t\t\t\t\t\ts1);\n\t\t\t\t} else {\n\t\t\t\t\tvar p = _v1.a;\n\t\t\t\t\tvar x = _v1.b;\n\t\t\t\t\treturn A2($elm$parser$Parser$Advanced$Bad, p, x);\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $elm$parser$Parser$map = $elm$parser$Parser$Advanced$map;\nvar $elm$parser$Parser$Advanced$Done = function (a) {\n\treturn {$: 'Done', a: a};\n};\nvar $elm$parser$Parser$Advanced$Loop = function (a) {\n\treturn {$: 'Loop', a: a};\n};\nvar $elm$parser$Parser$toAdvancedStep = function (step) {\n\tif (step.$ === 'Loop') {\n\t\tvar s = step.a;\n\t\treturn $elm$parser$Parser$Advanced$Loop(s);\n\t} else {\n\t\tvar a = step.a;\n\t\treturn $elm$parser$Parser$Advanced$Done(a);\n\t}\n};\nvar $elm$parser$Parser$loop = F2(\n\tfunction (state, callback) {\n\t\treturn A2(\n\t\t\t$elm$parser$Parser$Advanced$loop,\n\t\t\tstate,\n\t\t\tfunction (s) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t$elm$parser$Parser$toAdvancedStep,\n\t\t\t\t\tcallback(s));\n\t\t\t});\n\t});\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt = function (quantity) {\n\tvar helper = function (str) {\n\t\tif (_Utils_eq(\n\t\t\t$elm$core$String$length(str),\n\t\t\tquantity)) {\n\t\t\tvar _v0 = $elm$core$String$toInt(str);\n\t\t\tif (_v0.$ === 'Just') {\n\t\t\t\tvar intVal = _v0.a;\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t$elm$parser$Parser$Done,\n\t\t\t\t\t$elm$parser$Parser$succeed(intVal));\n\t\t\t} else {\n\t\t\t\treturn $elm$parser$Parser$problem('Invalid integer: \\\"' + (str + '\\\"'));\n\t\t\t}\n\t\t} else {\n\t\t\treturn A2(\n\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\tfunction (nextChar) {\n\t\t\t\t\treturn $elm$parser$Parser$Loop(\n\t\t\t\t\t\tA2($elm$core$String$append, str, nextChar));\n\t\t\t\t},\n\t\t\t\t$elm$parser$Parser$getChompedString(\n\t\t\t\t\t$elm$parser$Parser$chompIf($elm$core$Char$isDigit)));\n\t\t}\n\t};\n\treturn A2($elm$parser$Parser$loop, '', helper);\n};\nvar $elm$parser$Parser$ExpectingSymbol = function (a) {\n\treturn {$: 'ExpectingSymbol', a: a};\n};\nvar $elm$parser$Parser$Advanced$Token = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'Token', a: a, b: b};\n\t});\nvar $elm$parser$Parser$Advanced$isSubString = _Parser_isSubString;\nvar $elm$core$Basics$not = _Basics_not;\nvar $elm$parser$Parser$Advanced$token = function (_v0) {\n\tvar str = _v0.a;\n\tvar expecting = _v0.b;\n\tvar progress = !$elm$core$String$isEmpty(str);\n\treturn $elm$parser$Parser$Advanced$Parser(\n\t\tfunction (s) {\n\t\t\tvar _v1 = A5($elm$parser$Parser$Advanced$isSubString, str, s.offset, s.row, s.col, s.src);\n\t\t\tvar newOffset = _v1.a;\n\t\t\tvar newRow = _v1.b;\n\t\t\tvar newCol = _v1.c;\n\t\t\treturn _Utils_eq(newOffset, -1) ? A2(\n\t\t\t\t$elm$parser$Parser$Advanced$Bad,\n\t\t\t\tfalse,\n\t\t\t\tA2($elm$parser$Parser$Advanced$fromState, s, expecting)) : A3(\n\t\t\t\t$elm$parser$Parser$Advanced$Good,\n\t\t\t\tprogress,\n\t\t\t\t_Utils_Tuple0,\n\t\t\t\t{col: newCol, context: s.context, indent: s.indent, offset: newOffset, row: newRow, src: s.src});\n\t\t});\n};\nvar $elm$parser$Parser$Advanced$symbol = $elm$parser$Parser$Advanced$token;\nvar $elm$parser$Parser$symbol = function (str) {\n\treturn $elm$parser$Parser$Advanced$symbol(\n\t\tA2(\n\t\t\t$elm$parser$Parser$Advanced$Token,\n\t\t\tstr,\n\t\t\t$elm$parser$Parser$ExpectingSymbol(str)));\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear = 1970;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay = function (day) {\n\treturn $elm$parser$Parser$problem(\n\t\t'Invalid day: ' + $elm$core$String$fromInt(day));\n};\nvar $elm$core$Basics$modBy = _Basics_modBy;\nvar $elm$core$Basics$neq = _Utils_notEqual;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear = function (year) {\n\treturn (!A2($elm$core$Basics$modBy, 4, year)) && ((!(!A2($elm$core$Basics$modBy, 100, year))) || (!A2($elm$core$Basics$modBy, 400, year)));\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore = function (y1) {\n\tvar y = y1 - 1;\n\treturn (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerDay = 86400000;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerYear = 31536000000;\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$yearMonthDay = function (_v0) {\n\tvar year = _v0.a;\n\tvar month = _v0.b;\n\tvar dayInMonth = _v0.c;\n\tif (dayInMonth < 0) {\n\t\treturn $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth);\n\t} else {\n\t\tvar succeedWith = function (extraMs) {\n\t\t\tvar yearMs = $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerYear * (year - $rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear);\n\t\t\tvar days = ((month < 3) || (!$rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear(year))) ? (dayInMonth - 1) : dayInMonth;\n\t\t\tvar dayMs = $rtfeldman$elm_iso8601_date_strings$Iso8601$msPerDay * (days + ($rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore(year) - $rtfeldman$elm_iso8601_date_strings$Iso8601$leapYearsBefore($rtfeldman$elm_iso8601_date_strings$Iso8601$epochYear)));\n\t\t\treturn $elm$parser$Parser$succeed((extraMs + yearMs) + dayMs);\n\t\t};\n\t\tswitch (month) {\n\t\t\tcase 1:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(0);\n\t\t\tcase 2:\n\t\t\t\treturn ((dayInMonth > 29) || ((dayInMonth === 29) && (!$rtfeldman$elm_iso8601_date_strings$Iso8601$isLeapYear(year)))) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(2678400000);\n\t\t\tcase 3:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(5097600000);\n\t\t\tcase 4:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(7776000000);\n\t\t\tcase 5:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(10368000000);\n\t\t\tcase 6:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(13046400000);\n\t\t\tcase 7:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(15638400000);\n\t\t\tcase 8:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(18316800000);\n\t\t\tcase 9:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(20995200000);\n\t\t\tcase 10:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(23587200000);\n\t\t\tcase 11:\n\t\t\t\treturn (dayInMonth > 30) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(26265600000);\n\t\t\tcase 12:\n\t\t\t\treturn (dayInMonth > 31) ? $rtfeldman$elm_iso8601_date_strings$Iso8601$invalidDay(dayInMonth) : succeedWith(28857600000);\n\t\t\tdefault:\n\t\t\t\treturn $elm$parser$Parser$problem(\n\t\t\t\t\t'Invalid month: \\\"' + ($elm$core$String$fromInt(month) + '\\\"'));\n\t\t}\n\t}\n};\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$monthYearDayInMs = A2(\n\t$elm$parser$Parser$andThen,\n\t$rtfeldman$elm_iso8601_date_strings$Iso8601$yearMonthDay,\n\tA2(\n\t\t$elm$parser$Parser$keeper,\n\t\tA2(\n\t\t\t$elm$parser$Parser$keeper,\n\t\t\tA2(\n\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\tF3(\n\t\t\t\t\t\tfunction (year, month, day) {\n\t\t\t\t\t\t\treturn _Utils_Tuple3(year, month, day);\n\t\t\t\t\t\t})),\n\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(4)),\n\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t$elm$parser$Parser$symbol('-')),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t]))),\n\t\t$elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t$elm$parser$Parser$symbol('-')),\n\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t]))));\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$utcOffsetInMinutes = function () {\n\tvar utcOffsetMinutesFromParts = F3(\n\t\tfunction (multiplier, hours, minutes) {\n\t\t\treturn (multiplier * (hours * 60)) + minutes;\n\t\t});\n\treturn A2(\n\t\t$elm$parser$Parser$keeper,\n\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t$elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\tfunction (_v0) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t},\n\t\t\t\t\t$elm$parser$Parser$symbol('Z')),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t$elm$parser$Parser$succeed(utcOffsetMinutesFromParts),\n\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t\t\t\t\t\tfunction (_v1) {\n\t\t\t\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('+')),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$map,\n\t\t\t\t\t\t\t\t\t\tfunction (_v2) {\n\t\t\t\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('-'))\n\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2),\n\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(0)\n\t\t\t\t\t\t\t]))),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t$elm$parser$Parser$succeed(0),\n\t\t\t\t\t$elm$parser$Parser$end)\n\t\t\t\t])));\n}();\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$iso8601 = A2(\n\t$elm$parser$Parser$andThen,\n\tfunction (datePart) {\n\t\treturn $elm$parser$Parser$oneOf(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts(datePart)),\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('T')),\n\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol(':')),\n\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)),\n\t\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$paddedInt(2)\n\t\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\t\t$elm$parser$Parser$oneOf(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$keeper,\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed($elm$core$Basics$identity),\n\t\t\t\t\t\t\t\t\t\t$elm$parser$Parser$symbol('.')),\n\t\t\t\t\t\t\t\t\t$rtfeldman$elm_iso8601_date_strings$Iso8601$fractionsOfASecondInMs),\n\t\t\t\t\t\t\t\t\t$elm$parser$Parser$succeed(0)\n\t\t\t\t\t\t\t\t]))),\n\t\t\t\t\tA2($elm$parser$Parser$ignorer, $rtfeldman$elm_iso8601_date_strings$Iso8601$utcOffsetInMinutes, $elm$parser$Parser$end)),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$parser$Parser$ignorer,\n\t\t\t\t\t$elm$parser$Parser$succeed(\n\t\t\t\t\t\tA6($rtfeldman$elm_iso8601_date_strings$Iso8601$fromParts, datePart, 0, 0, 0, 0, 0)),\n\t\t\t\t\t$elm$parser$Parser$end)\n\t\t\t\t]));\n\t},\n\t$rtfeldman$elm_iso8601_date_strings$Iso8601$monthYearDayInMs);\nvar $elm$parser$Parser$DeadEnd = F3(\n\tfunction (row, col, problem) {\n\t\treturn {col: col, problem: problem, row: row};\n\t});\nvar $elm$parser$Parser$problemToDeadEnd = function (p) {\n\treturn A3($elm$parser$Parser$DeadEnd, p.row, p.col, p.problem);\n};\nvar $elm$parser$Parser$Advanced$bagToList = F2(\n\tfunction (bag, list) {\n\t\tbagToList:\n\t\twhile (true) {\n\t\t\tswitch (bag.$) {\n\t\t\t\tcase 'Empty':\n\t\t\t\t\treturn list;\n\t\t\t\tcase 'AddRight':\n\t\t\t\t\tvar bag1 = bag.a;\n\t\t\t\t\tvar x = bag.b;\n\t\t\t\t\tvar $temp$bag = bag1,\n\t\t\t\t\t\t$temp$list = A2($elm$core$List$cons, x, list);\n\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue bagToList;\n\t\t\t\tdefault:\n\t\t\t\t\tvar bag1 = bag.a;\n\t\t\t\t\tvar bag2 = bag.b;\n\t\t\t\t\tvar $temp$bag = bag1,\n\t\t\t\t\t\t$temp$list = A2($elm$parser$Parser$Advanced$bagToList, bag2, list);\n\t\t\t\t\tbag = $temp$bag;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue bagToList;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$parser$Parser$Advanced$run = F2(\n\tfunction (_v0, src) {\n\t\tvar parse = _v0.a;\n\t\tvar _v1 = parse(\n\t\t\t{col: 1, context: _List_Nil, indent: 1, offset: 0, row: 1, src: src});\n\t\tif (_v1.$ === 'Good') {\n\t\t\tvar value = _v1.b;\n\t\t\treturn $elm$core$Result$Ok(value);\n\t\t} else {\n\t\t\tvar bag = _v1.b;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tA2($elm$parser$Parser$Advanced$bagToList, bag, _List_Nil));\n\t\t}\n\t});\nvar $elm$parser$Parser$run = F2(\n\tfunction (parser, source) {\n\t\tvar _v0 = A2($elm$parser$Parser$Advanced$run, parser, source);\n\t\tif (_v0.$ === 'Ok') {\n\t\t\tvar a = _v0.a;\n\t\t\treturn $elm$core$Result$Ok(a);\n\t\t} else {\n\t\t\tvar problems = _v0.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tA2($elm$core$List$map, $elm$parser$Parser$problemToDeadEnd, problems));\n\t\t}\n\t});\nvar $rtfeldman$elm_iso8601_date_strings$Iso8601$toTime = function (str) {\n\treturn A2($elm$parser$Parser$run, $rtfeldman$elm_iso8601_date_strings$Iso8601$iso8601, str);\n};\nvar $elm_community$json_extra$Json$Decode$Extra$datetime = A2(\n\t$elm$json$Json$Decode$andThen,\n\tfunction (dateString) {\n\t\tvar _v0 = $rtfeldman$elm_iso8601_date_strings$Iso8601$toTime(dateString);\n\t\tif (_v0.$ === 'Ok') {\n\t\t\tvar v = _v0.a;\n\t\t\treturn $elm$json$Json$Decode$succeed(v);\n\t\t} else {\n\t\t\treturn $elm$json$Json$Decode$fail('Expecting an ISO-8601 formatted date+time string');\n\t\t}\n\t},\n\t$elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$map6 = _Json_map6;\nvar $author$project$DocumentSearch$conversationMessageDecoder = A7(\n\t$elm$json$Json$Decode$map6,\n\t$author$project$DocumentSearch$ConversationMessage,\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'conversation_id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'subject', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'created_at', $elm_community$json_extra$Json$Decode$Extra$datetime));\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$DocumentSearch$conversationMessagesDecoder = $elm$json$Json$Decode$list($author$project$DocumentSearch$conversationMessageDecoder);\nvar $elm$json$Json$Decode$decodeString = _Json_runOnString;\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'BadStatus_', a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 'BadUrl_', a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'GoodStatus_', a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 'NetworkError_'};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 'Receiving', a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 'Sending', a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 'Timeout_'};\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (maybe.$ === 'Just') {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1.$) {\n\t\t\t\t\tcase 'LT':\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 'EQ':\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = {$: 'Black'};\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$Red = {$: 'Red'};\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1.$) {\n\t\t\t\tcase 'LT':\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 'EQ':\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {\n\t\tif ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr.$ === 'Black') {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {\n\t\tif ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t$elm$core$Dict$Red,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr.$ === 'Black') {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t$elm$core$Dict$Black,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {\n\t\t\t\t\tif (right.d.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\t\tif (right.d.a.$ === 'Black') {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor.$ === 'Black') {\n\t\t\tif ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === 'RBEmpty_elm_builtin') {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === 'RBNode_elm_builtin') {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === 'RBNode_elm_builtin') {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $elm$http$Http$expectStringResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'',\n\t\t\t$elm$core$Basics$identity,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $elm$core$Result$mapError = F2(\n\tfunction (f, result) {\n\t\tif (result.$ === 'Ok') {\n\t\t\tvar v = result.a;\n\t\t\treturn $elm$core$Result$Ok(v);\n\t\t} else {\n\t\t\tvar e = result.a;\n\t\t\treturn $elm$core$Result$Err(\n\t\t\t\tf(e));\n\t\t}\n\t});\nvar $elm$http$Http$BadBody = function (a) {\n\treturn {$: 'BadBody', a: a};\n};\nvar $elm$http$Http$BadStatus = function (a) {\n\treturn {$: 'BadStatus', a: a};\n};\nvar $elm$http$Http$BadUrl = function (a) {\n\treturn {$: 'BadUrl', a: a};\n};\nvar $elm$http$Http$NetworkError = {$: 'NetworkError'};\nvar $elm$http$Http$Timeout = {$: 'Timeout'};\nvar $elm$http$Http$resolve = F2(\n\tfunction (toResult, response) {\n\t\tswitch (response.$) {\n\t\t\tcase 'BadUrl_':\n\t\t\t\tvar url = response.a;\n\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t$elm$http$Http$BadUrl(url));\n\t\t\tcase 'Timeout_':\n\t\t\t\treturn $elm$core$Result$Err($elm$http$Http$Timeout);\n\t\t\tcase 'NetworkError_':\n\t\t\t\treturn $elm$core$Result$Err($elm$http$Http$NetworkError);\n\t\t\tcase 'BadStatus_':\n\t\t\t\tvar metadata = response.a;\n\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t$elm$http$Http$BadStatus(metadata.statusCode));\n\t\t\tdefault:\n\t\t\t\tvar body = response.b;\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Result$mapError,\n\t\t\t\t\t$elm$http$Http$BadBody,\n\t\t\t\t\ttoResult(body));\n\t\t}\n\t});\nvar $elm$http$Http$expectJson = F2(\n\tfunction (toMsg, decoder) {\n\t\treturn A2(\n\t\t\t$elm$http$Http$expectStringResponse,\n\t\t\ttoMsg,\n\t\t\t$elm$http$Http$resolve(\n\t\t\t\tfunction (string) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Result$mapError,\n\t\t\t\t\t\t$elm$json$Json$Decode$errorToString,\n\t\t\t\t\t\tA2($elm$json$Json$Decode$decodeString, decoder, string));\n\t\t\t\t}));\n\t});\nvar $elm$http$Http$emptyBody = _Http_emptyBody;\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 'Request', a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {reqs: reqs, subs: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (cmd.$ === 'Cancel') {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 'Nothing') {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.tracker;\n\t\t\t\t\t\t\tif (_v4.$ === 'Nothing') {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.reqs));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (_v0.$ === 'Just') {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.subs)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 'Cancel', a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (cmd.$ === 'Cancel') {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\tallowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,\n\t\t\t\t\tbody: r.body,\n\t\t\t\t\texpect: A2(_Http_mapExpect, func, r.expect),\n\t\t\t\t\theaders: r.headers,\n\t\t\t\t\tmethod: r.method,\n\t\t\t\t\ttimeout: r.timeout,\n\t\t\t\t\ttracker: r.tracker,\n\t\t\t\t\turl: r.url\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 'MySub', a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url}));\n};\nvar $elm$http$Http$get = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{body: $elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});\n};\nvar $author$project$DocumentSearch$getMessagesFromFileSha = F2(\n\tfunction (projectId, fileInfo) {\n\t\treturn $elm$http$Http$get(\n\t\t\t{\n\t\t\t\texpect: A2(\n\t\t\t\t\t$elm$http$Http$expectJson,\n\t\t\t\t\t$author$project$DocumentSearch$GetConversationMessages(fileInfo),\n\t\t\t\t\t$author$project$DocumentSearch$conversationMessagesDecoder),\n\t\t\t\turl: A2(\n\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t'projects',\n\t\t\t\t\t\t\t$elm$core$String$fromInt(projectId),\n\t\t\t\t\t\t\t'document',\n\t\t\t\t\t\t\tfileInfo.fileData.file_sha1,\n\t\t\t\t\t\t\t'messages'\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil)\n\t\t\t});\n\t});\nvar $elm$core$List$any = F2(\n\tfunction (isOkay, list) {\n\t\tany:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tif (isOkay(x)) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$isOkay = isOkay,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tisOkay = $temp$isOkay;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue any;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$member = F2(\n\tfunction (x, xs) {\n\t\treturn A2(\n\t\t\t$elm$core$List$any,\n\t\t\tfunction (a) {\n\t\t\t\treturn _Utils_eq(a, x);\n\t\t\t},\n\t\t\txs);\n\t});\nvar $author$project$DocumentSearch$update = F2(\n\tfunction (message, model) {\n\t\tif (model.$ === 'ValidModel') {\n\t\t\tvar validModel = model.a;\n\t\t\tswitch (message.$) {\n\t\t\t\tcase 'FileDropped':\n\t\t\t\t\tvar fileData = message.a;\n\t\t\t\t\tvar fileInfo = A2($author$project$DocumentSearch$FileInformation, fileData, _List_Nil);\n\t\t\t\t\tvar fileAlreadyBeenDropped = A2(\n\t\t\t\t\t\t$elm$core$List$member,\n\t\t\t\t\t\tfileData,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\tfunction (fi) {\n\t\t\t\t\t\t\t\treturn fi.fileData;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvalidModel.fileInfoList)) ? true : false;\n\t\t\t\t\tvar newFileInfoList = fileAlreadyBeenDropped ? validModel.fileInfoList : A2($elm$core$List$cons, fileInfo, validModel.fileInfoList);\n\t\t\t\t\treturn fileAlreadyBeenDropped ? _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$DocumentSearch$ValidModel(validModel),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none) : _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$DocumentSearch$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tvalidModel,\n\t\t\t\t\t\t\t\t{fileInfoList: newFileInfoList})),\n\t\t\t\t\t\tA2($author$project$DocumentSearch$getMessagesFromFileSha, validModel.projectId, fileInfo));\n\t\t\t\tcase 'Recv':\n\t\t\t\t\tvar error = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$DocumentSearch$ErrorModel(error),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tcase 'AdjustTimeZone':\n\t\t\t\t\tvar newTimeZone = message.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t$author$project$DocumentSearch$ValidModel(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tvalidModel,\n\t\t\t\t\t\t\t\t{timeZone: newTimeZone})),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\tdefault:\n\t\t\t\t\tvar fileInfo = message.a;\n\t\t\t\t\tvar response = message.b;\n\t\t\t\t\tif (response.$ === 'Ok') {\n\t\t\t\t\t\tvar conversationMessages = response.a;\n\t\t\t\t\t\tvar updateFileInfo = function (fileInfoArgument) {\n\t\t\t\t\t\t\treturn _Utils_eq(fileInfo, fileInfoArgument) ? _Utils_update(\n\t\t\t\t\t\t\t\tfileInfo,\n\t\t\t\t\t\t\t\t{telegrams: conversationMessages}) : fileInfoArgument;\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$DocumentSearch$ValidModel(\n\t\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\t\tvalidModel,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfileInfoList: A2($elm$core$List$map, updateFileInfo, validModel.fileInfoList)\n\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar error = response.a;\n\t\t\t\t\t\tvar errorString = function () {\n\t\t\t\t\t\t\tswitch (error.$) {\n\t\t\t\t\t\t\t\tcase 'BadUrl':\n\t\t\t\t\t\t\t\t\tvar url = error.a;\n\t\t\t\t\t\t\t\t\treturn 'The URL ' + (url + ' was invalid');\n\t\t\t\t\t\t\t\tcase 'Timeout':\n\t\t\t\t\t\t\t\t\treturn 'Unable to reach the server, try again';\n\t\t\t\t\t\t\t\tcase 'NetworkError':\n\t\t\t\t\t\t\t\t\treturn 'Unable to reach the server, check your network connection';\n\t\t\t\t\t\t\t\tcase 'BadStatus':\n\t\t\t\t\t\t\t\t\tswitch (error.a) {\n\t\t\t\t\t\t\t\t\t\tcase 500:\n\t\t\t\t\t\t\t\t\t\t\treturn 'The server had a problem, try again later';\n\t\t\t\t\t\t\t\t\t\tcase 400:\n\t\t\t\t\t\t\t\t\t\t\treturn 'Verify your information and try again';\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\treturn 'Unknown error';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tvar errorMessage = error.a;\n\t\t\t\t\t\t\t\t\treturn errorMessage;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t$author$project$DocumentSearch$ErrorModel(errorString),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar error = model.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t$author$project$DocumentSearch$ErrorModel(error),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target');\nvar $elm$html$Html$td = _VirtualDom_node('td');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$html$Html$tr = _VirtualDom_node('tr');\nvar $author$project$DocumentSearch$messageRow = function (conversationMessage) {\n\tvar displaySubject = ($elm$core$String$length(conversationMessage.subject) > 35) ? (A3($elm$core$String$slice, 0, 155, conversationMessage.subject) + '...') : A3($elm$core$String$slice, 0, 155, conversationMessage.subject);\n\treturn A2(\n\t\t$elm$html$Html$tr,\n\t\t_List_Nil,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$td,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('_blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$url$Url$Builder$absolute,\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t'messages',\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(conversationMessage.id)\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t_List_Nil))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text(displaySubject)\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $elm$html$Html$table = _VirtualDom_node('table');\nvar $elm$html$Html$tbody = _VirtualDom_node('tbody');\nvar $elm$html$Html$thead = _VirtualDom_node('thead');\nvar $author$project$DocumentSearch$messagesTable = function (conversationMessages) {\n\tvar tableBody = $elm$core$List$isEmpty(conversationMessages) ? _List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$tr,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$td,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('... Nope. Never got this file.')\n\t\t\t\t\t\t]))\n\t\t\t\t]))\n\t\t]) : _Utils_ap(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$tr,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$td,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('... was found here:')\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tA2($elm$core$List$map, $author$project$DocumentSearch$messageRow, conversationMessages));\n\treturn A2(\n\t\t$elm$html$Html$table,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('table table-bordered')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$html$Html$thead, _List_Nil, _List_Nil),\n\t\t\t\tA2($elm$html$Html$tbody, _List_Nil, tableBody)\n\t\t\t]));\n};\nvar $author$project$DocumentSearch$fileTableRow = function (fileInfo) {\n\treturn A2(\n\t\t$elm$html$Html$tr,\n\t\t_List_Nil,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$td,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(fileInfo.fileData.filename)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$td,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$author$project$DocumentSearch$messagesTable(fileInfo.telegrams)\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $elm$html$Html$th = _VirtualDom_node('th');\nvar $author$project$DocumentSearch$fileTable = function (fileInfos) {\n\treturn A2(\n\t\t$elm$html$Html$table,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('table table-bordered')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$thead,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$tr,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('File Name was found...')\n\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$th,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('...in these Messages:')\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$tbody,\n\t\t\t\t_List_Nil,\n\t\t\t\tA2($elm$core$List$map, $author$project$DocumentSearch$fileTableRow, fileInfos))\n\t\t\t]));\n};\nvar $elm$html$Html$h3 = _VirtualDom_node('h3');\nvar $elm$html$Html$p = _VirtualDom_node('p');\nvar $author$project$DocumentSearch$view = function (model) {\n\tif (model.$ === 'ErrorModel') {\n\t\tvar error = model.a;\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(error)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t} else {\n\t\tvar validModel = model.a;\n\t\treturn $elm$core$List$isEmpty(validModel.fileInfoList) ? A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$h3,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-center')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('Drag and Drop Here')\n\t\t\t\t\t\t])),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-center')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('...and we\\'ll tell you which messages they were sent or received in')\n\t\t\t\t\t\t])),\n\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil)\n\t\t\t\t])) : A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$h3,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-center')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('Drag and Drop here')\n\t\t\t\t\t\t])),\n\t\t\t\t\t$author$project$DocumentSearch$fileTable(validModel.fileInfoList)\n\t\t\t\t]));\n\t}\n};\nvar $author$project$DocumentSearch$main = $elm$browser$Browser$element(\n\t{init: $author$project$DocumentSearch$init, subscriptions: $author$project$DocumentSearch$subscriptions, update: $author$project$DocumentSearch$update, view: $author$project$DocumentSearch$view});\n_Platform_export({'DocumentSearch':{'init':$author$project$DocumentSearch$main($elm$json$Json$Decode$value)(0)}});}(this));", "export default {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordMessage() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\",\n \"remote\": \"remote\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n triedToReconnect() {\n return this.monitor.reconnectAttempts > 0\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n this.monitor.recordMessage()\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true\n }\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return null\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n }\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n this.subprotocols = []\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n\n addSubProtocol(subprotocol) {\n this.subprotocols = [...this.subprotocols, subprotocol]\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n", "module.exports = function has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n};", "function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar has = require('./hasProperty');\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\n\n\nmodule.exports = /*#__PURE__*/function () {\n /**\n * @param {object|Array} locales - locale or list of locales.\n */\n function Translator(locales) {\n var _this = this;\n\n this.locale = {\n strings: {},\n pluralize: function pluralize(n) {\n if (n === 1) {\n return 0;\n }\n\n return 1;\n }\n };\n\n if (Array.isArray(locales)) {\n locales.forEach(function (locale) {\n return _this._apply(locale);\n });\n } else {\n this._apply(locales);\n }\n }\n\n var _proto = Translator.prototype;\n\n _proto._apply = function _apply(locale) {\n if (!locale || !locale.strings) {\n return;\n }\n\n var prevLocale = this.locale;\n this.locale = _extends({}, prevLocale, {\n strings: _extends({}, prevLocale.strings, locale.strings)\n });\n this.locale.pluralize = locale.pluralize || prevLocale.pluralize;\n }\n /**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @returns {any[]} interpolated\n */\n ;\n\n _proto.interpolate = function interpolate(phrase, options) {\n var _String$prototype = String.prototype,\n split = _String$prototype.split,\n replace = _String$prototype.replace;\n var dollarRegex = /\\$/g;\n var dollarBillsYall = '$$$$';\n var interpolated = [phrase];\n\n for (var arg in options) {\n if (arg !== '_' && has(options, arg)) {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n var replacement = options[arg];\n\n if (typeof replacement === 'string') {\n replacement = replace.call(options[arg], dollarRegex, dollarBillsYall);\n } // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n\n\n interpolated = insertReplacement(interpolated, new RegExp(\"%\\\\{\" + arg + \"\\\\}\", 'g'), replacement);\n }\n }\n\n return interpolated;\n\n function insertReplacement(source, rx, replacement) {\n var newParts = [];\n source.forEach(function (chunk) {\n // When the source contains multiple placeholders for interpolation,\n // we should ignore chunks that are not strings, because those\n // can be JSX objects and will be otherwise incorrectly turned into strings.\n // Without this condition we\u2019d get this: [object Object] hello [object Object] my